awk比sed、grep要复杂一些,awk支持分段,例如像passwd文件的内容很有规律用冒号分成七段,awk可以针对每一段进行匹配。
awk最简单的用法就是照某个字符进行分割,然后可以选择打印某一段:
打印所有的段:
不分段,直接打印文件内容:
不指定分段的字符符就会默认以空格为分段字符:
打印多段内容:
指定打印的时候以什么字符进行分割,例如我以*号进行分割:
匹配指定字所在的行:
指定匹配某一段并且此段包含指定字符的行,例如我指定匹配第一段包含有oo字符串的行:
这就是awk强大的地方,并且同样匹配正则表达式。
在awk中使用正则表达式不用加脱义符,默认就可以支持:
awk支持同时写多个表达式:
这个命令表示打印含有root或user字符的行
使用|也可以:
awk还可以使用关系运算符:
这个命令表示匹配第三段含有0的行
以上使用关系运算符进行的匹配是按照实际数字大小来匹配的,如果要按ASCII码的的大小匹配的话,加上双引号即可:
在awk命令里使用比较运算符:
指定打印的分割符:
想要写得规整一些就加上if条件判断语句:
使用内置变量打印所有的行:
NR表示行
NF表示段
NR可以作为一个判断条件,例如我只打印前10行:
使用多个判断条件:
给NR和NF加上$符:
使用awk命令对文件的某一段进行赋值:
使用awk命令进行求和:
本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/1972703,如需转载请自行联系原作者