简介
awk功能与sed相似,都是用来进行文本处理的。
awk可以从文件或字符串中基于指定规则浏览和抽取信息,再进行其他文本操作。
执行过程
awk有BEGIN和END两个特殊的字段,执行过程为:
1.读入文件前执行BEGIN字段的命令
2.主输入循环,对每个输入文件进行处理
3.读取文件完毕,执行END字段命令
记录和域
awk认为输入文件是结构化的,默认情况下每一行为一条记录,行中以空格分割的为域。
awk用来处理匹配记录的域,$1为第一个域,$0为所有的域。如果匹配命令为空,则处理所有的记录。
FS可以设置域的分隔符,RS可以设置记录的分隔符。
表达式
awk与c语言相似,判断相等时用 ==
举例
awk ' /^$/{print "This is a blank line ."} ' inputfile
在 ‘ ’ 之间为awk处理命令,一般先由BEGIN来设置FS和RS,在由正则表达式匹配需要处理的记录,在对记录里面的域进行某些操作,再进行END字段。
具体的处理也可以使用if for while 循环进行,包括布尔运算、关系运算的方式,也有很多系统变量比如NF代表域的总个数,设置输出文本的方式。
还有很多内置的字符串函数等。
需要用时 man awk 查看一下选项即可
参考 <<linux shell编程-从初学到精通>>