Awk格式化输出/内置字符串函数/数组
来源:互联网 发布:windows下caffe安装 编辑:程序博客网 时间:2024/05/16 07:18
一、格式化输出
awk一大主要功能就是产生报表,报表就要按照预订的格式输出,awk借鉴C,也定义了printf输出语句,它可以规定输出的格式,printf基本语法如下:
printf(格式控制符,参数)
由上可知 printf语句包含两部分:①格式控制符,以 % 开始,描述格式规范;②参数列表,比如变量名列表,与格式控制符相对应,为输出对象。示例:
awk '{printf (“%s\t%d\n”,$2,$8)}' 输入文件
指令中,%s与$2对应,%d与$8对应。
格式控制符有分为printf修饰符 和格式符两种:
printf修饰符及意义
修饰符
意义
-
坐对齐
width
域的步长
.prec
小数点右边的位数
Printf格式符及意义
格式符
意义
%c
ASCII字符
%d
整形数
%e
浮点数,科学记数法
%f
浮点数
%o
八进制数
%s
字符串
%x
十六进制数
示例:awk '{printf(“%10.3f\n”,2009.1012)}'
其中, width = 10,表示浮点数长度控制在10位;.prec = .3,表示小数点后3位。
我们可以总结出printf修饰符一般的形式: %-width.prec 格式控制符。
二、内置字符串函数
awk提供了强大的内置字符串函数,用于实现文本的字符串替换、查找以及分隔功能:
awk字符串及意义
函数
意义
gsub(r,s)
在输入文件中用s替换 r (作用于全部域 $0)
gsub(r,s,t)
在t中用s替换 r (作用于全部域 t)
index(s,t)
返回s中字符串第一个t的位置
length(s)
返回s的长度
match(s,t)
测试s是否包含匹配t的字符串
(成功,返回t的首位置;失败,返回0)
split(r,s,t)
在t上将r分成序列s(以t为分隔符,将r拆分成字符串数组s)
sub(r,s,t)
在t中第一次出现的r替换为s
substr(r,s)
返回字符串r中从s开始的后缀部分
substr(r,s,t)
返回字符串r中从s开始长度为t的后缀部分
三、向awk脚本传递传递参数
awk脚本内的变量可在命令中进行赋值,实现像awk脚本传递参数,格式为:
awk脚本 parameter=value输入文件
变量赋值放在脚本之后,输入文件之前,=两端不能有空格。
awk所传递的参数可以是自定义变量,也可以是系统变量。
注意:命令行参数不能被BEGIN字段访问。
四、条件语句和循环语句
awk的条件语句和循环语句与C语言的语法完全相同。
可以使用~匹配符和正则表达式作为if语句的条件。示例:
if(x ~ /hel?o/) print x 若x中匹配模式 hel?o,将其打印
五、数组
awk数组的形式与C相同,但是,awk数组无需定义数组类型和大小,可以赋值后直接使用,
基本格式:
array[index] = value
关联数组
关联数组是指数组的索引可以是字符串,也可以是数字。关联数组在索引和数组元素之间建立起关联,
对每一个数组元素,awk自动维护了一对值:索引和数组元素值。关联数组的值无需以连续的地址进行存储,
所以,关联数组即便可以通过数字作为索引,但是,该数字索引并不表示数组存储地址的信息。awk的所以数组都是关联数组,这是awk数组与其他编程语言数组的本质区别。
字符串和数字之间是有明显差别的,例如,arry[09]和arry[9]二者就不能指定到数组中相同的值。
awk也特别定义了一种for循环来访问关联数组,语法形式:
for(variable in array)
dosomething with array[variable]
variable是任意指定的变量。
关键字in也可以在条件表达式中判断元素是否在数组中,语法格式如下:
indexin array
若array[index]存在,返回1,反之,返回0.
split(r,s,t)函数将字符串以t为分隔符,将r字符串拆分为字符串数组,并存放在s中。
数组形式的系统变量
awk系统变量中ARGV和ENVIRON,ARGC是ARGV数组中元素的个数,这一点和C相同。
ENVIRON的索引是环境变量名,可以通过环境变量名直接得到其值:
ENVIRON[“USER”]
ENVIRON[“OLDPWD”]
环境变量名要放到双引号里面。
本文完全参照 <linux shell 编程从初学到精通> 华清远见嵌入式培训中心 伍之昂等编著
- Awk格式化输出/内置字符串函数/数组
- awk字符串函数(printf格式化输出) -- shell
- awk内置字符串函数
- awk内置字符串函数
- awk内置字符串函数:实例
- awk内置字符串函数详解
- awk内置字符串函数详解
- awk 的内置字符串函数
- awk 内置字符串函数简介
- awk 内置字符串函数简介
- awk编程——内置字符串函数
- Freemarker内置函数,数字,字符串,日期格式化
- awk 格式化输出
- awk 格式化输出
- awk的内置函数
- **awk内置函数小节**
- #AWK#SUB内置函数
- awk内置函数
- HDOJ题目1513 Palindrome(LCS,滚动数组)
- android UI线程与非UI线程交互(二)
- iOS 修改通讯录联系人地址(address)崩溃原因分析
- IOS开发---C语言-⑰指向结构体的指针
- 网页呈现语言HTML
- Awk格式化输出/内置字符串函数/数组
- codeforces 490D Chocolate(数学或搜索)
- 算法导论--学习笔记09
- 今天的棘手问题
- 卓越的教练是如何训练高手的
- 读取SIM卡的状态、sim卡网络
- ibatis快速入门(一)
- spring-mvc
- 零碎问题汇总