AWK详解
awk示例:
输出a.txt中的每一行
awk ‘{print $0}’ a.txt
多个代码块,代码块中多个语句
输出每行之后还输出两行:hello行和world行
awk ‘{print $0}{print “hello”;print “world”}’ a.txt
对于awk ‘{print $0}’ a.txt,它类似于shell的while循环while read line;do echo “$line”;done <a.txt。awk隐藏了读取每一行的while循环,它会自动读取每一行,其中的{print $0}对应于Shell的while循环体echo “$line”部分。
下面再分析该awk命令的执行过程:
读取文件第一行(awk默认按行读取文件)
将所读取的行赋值给awk的变量$0,于是$0中保存的就是本次所读取的行数据
进入代码块{print $0}并执行其中代码print $0,即输出$0,也即输出当前所读取的行
执行完本次代码之后,进入下一轮awk循环:继续读取下一行(第二行)
将第二行赋值给变量$0
进入代码块执行print $0
执行完代码块后再次进入下一轮awk循环,即读取第三行,然后赋值给$0,再执行代码块
…不断循环,直到读完文件所有数据…
退出awk