最后一章节来总结高级的gawk的用法。认真的看了一遍,发现gawk这东西其实就是一门语言,无误!使用方法非常的得心应手
1、内建的变量:(挑选几个有用的)
FIELDWIDTHS 每个数据字段的确切宽度
FS 输入字段分隔符
RS 输入数据行的分隔符
OFS 输出字段分隔符
ORS 输出行的数据分隔符
ARGC 当前命令行参数个数
ARGIND 当前文件在ARGV中的位置
ARGV 包含命令行参数的数组
ENVIRON 当前shell环境变量及其值组成的关联数组
FILENAME 当前数据文件中的数据行数
FNR 当前数据文件中的数据行数
NF 数据文件中的字段总数
NR 已处理的输入数据行数目
2、自定义数组:gawk中的数组使用类似于Java中的map的形式,叫做关联数组
举例:var[index] = element
说明:其中index可以是字符串
遍历数组:
for(i in var)
{
print "Index:",i,"value:",var[i]
}
3、使用模式:
正则:gawk 'BEGIN{FS=","} /11/{print $1}' data(匹配数据字段中含有字符串11的数据行)
操作符:gawk 'BEGIN{FS=","} $2 ~ /^data2/{print $0}' data1(表示第二个数据字段是以data2开头的数据行)
表达式:gawk -F: '$4 == 0{print $1}' /etc/passwd(表示第4个字段等于零的数据行,输出第1个字段)
4、结构化指令:if、while和for这些个语法和c的无差异,这里不多解释
5、格式化打印:这个也是和c无差异(还好是计算机科班出身)
6、内置函数:这个比较有用,可以直接对字符串进行操作
基本的数学类函数:
cos(x) 余弦
exp(x) 指数函数
int(x) x的整数部分
log(x) x的自然对数
rand() 0到1之间的随机数,不包含0和1
sin(x) 正弦
sqrt(x) x的平方根
srand(x) 为计算随机数指定一个种子值
and(v1,v2) v1和v2按位与
compl(val) 执行val的补运算
lshift(val,count) 将val左移count
or(v1,v2) 执行v1和v2的按位或运算
rshift(val,count) 将val右移count
xor(v1,v2) 执行v1和v2安慰异或运算
还有很牛逼的字符串类函数:(如下图)
时间类函数:(如下图)
7、自定义函数
模板:
function name(variables)
{
statements
}
转载于:https://my.oschina.net/UBW/blog/846390