日志最后一列是执行时间字段,为了统计执行时间超过100的日志,于是使用awk如下:
1 |
#awk '{if($NF > 100) print $0}' log.log |
上面是一直是用的写法,经常在写,都写烦了,今天多想了一下,才发现可以简写如下:
1 |
#awk '$NF > 100' log.log |
这样确实简单了不少,好好学习,天天向上
awk 中对于每行可以执行n个模式,匹配模式后的默认操作是:
1 |
{print $0} |
注意,只能有一个模式使用默认操作,且只能最后一个模式才能使用默认操作
如:
1 |
#echo 101 202 303 |awk '$1 > 100 $2 > 200 $3 > 300' |
是错误的,正确写法可以如下:
1 |
#echo 101 202 303 |awk '$1 > 100 {print $0} $2 > 200 {print $0} $3 > 300' |
总结:
1. 模式需要对应执行体,只允许最后一个模式使用默认执行体
2. 执行体可以没有显示的模式,如下是可以的:
1 |
#echo 101 202 303 |awk '{print $0} {print $0} ' |
替换空格:
1 |
#awk 'BEGIN{function trim(str){sub("/^ +/","", str); sub("/ +$/", "", str);}} {trim($0)}' |
参考资料: http://linux.chinaunix.net/docs/2006-12-13/3461.shtml