linux awk你所不知道的用法,会了可以省好多功夫!!!

1.指定多个分隔符,这几个分隔符同时起作用

例:以空格和逗点为分隔符

2.key数组法,用于处理二维数据

例:我上篇日志中那个老大的命令

awk 'NR==FNR{key=$1" "$2" "$3;a[key]=$4}NR>FNR{print $0,a[$1" "$2" "$4]/1000000}' a b

当NR==FNR的时候,把数据存储在数组a[key]中,方便后面使用。

3.NR和FNR的用法,用于处理多个文件

PS:NR——指到目前为止的记录数;FNR——当前文件的记录数,一个新的文件则FNR重新从1开始计数。

还是上面的例子,处理a和b两个文件,先从a取得数组a,再和b处理得到所需要的结果。

4.awk的范围模板,匹配从第一个模板地N次出现和第二个模板地N次出现之间的所有行(N要对应)。

例:

5.awk命令内部的重定向

awk 可使用shell的重定向符(">" or ">>")进行重定向输出。

例:$ awk '$1 = 100 {print $1 > "output_file" }' test

上式表示如果第一个域的值等于100,则把它输出到output_file中。也可以用>>来重定向输出,但不清空文件,只做追加操作。

参考:http://blog.csdn.net/eroswang/article/details/5258216

原文地址:https://www.cnblogs.com/aaronwxb/p/2150574.html