awk是一个对数据进行逐行处理的命令,它逐行扫描文本,对匹配到模式的文本进行指定操作处理。
命令格式如下:
awk 选项 脚本
其中脚本包括:模式和操作,即对匹配到模式的文本,进行特定操作。
一个简单的例子如:
file中包含的记录如下
打印所有包含yangqi的行
awk -F ' ' '/yangqi/{print $0}' file
选项部分 将分割符号设置为空格
脚本部分包含单引号中的两部分,
模式:/yangqi/ 正则表达式中,包行yangqi
操作:操作必须用{},该操作打印整行
awk循环
awk的循环包含while循环和for循环
while循环:
awk -F ' ' '/yangqi/{i=1;while(i<NF){i++;print $i}}' text
for循环:
awk -F ' ' '/yangqi/{for(i=1;i<NF;i++){print $i}}' text
条件判断
if else
awk -F ' ' '{if(NF>=3&&$i<=2){print $i}else{print "ok"}}' num
if
awk -F ' ' '{if(NF>=3&&$i<=2){print $i}}' num
BEGIN块:
只在最开始的位置执行
awk -F ' ' 'BEGIN{print "begin"}{if(NF>=3&&$i<=2){print $i}else{print "ok"}}' num
END块:
只在最结束的位置执行
awk -F ' ' '{if(NF>=3&&$i<=2){print $i}else{print "ok"}}END{print "begin"}' num
awk内置变量
NF:number of filds
NR:number of record
等等
详情参考:
http://man.lupaworld.com/content/manage/ringkee/awk.htm