awk是linux上最常用的文本分析工具,对于标准化的日志输出,可以使用awk分析
记录一些常用操作
1. 打印某列
awk '{print $1,$3,$5}' file
2. 某列求和
awk '{print x+=$1}END{print x}' file
3. if else
awk '{ if ($1 + "0" > 1000) {print $1} else {print $2} }'
4. 针对某列去重
awk '{if (a[$1] != 0) print; else a[$1]}'
5. 两文件取交集
awk 'NR==FNR{a[$1];next}{if(!($1 in a))print $0}' a b
首先NR==FNR对文本a进行处理,把$1的值作为下标放入数组a,next不会执行后面的语句,一直读到文本b不满足NR==FNR条件,这时判断文本b的$1是否存在于数组a中的下标中,显然文本b的第一行的$1是存在于数组a的下标中的,那么条件为真