日期:2014-05-16  浏览次数:20784 次

awk编程问题
用shell,统计如下日志文件中连接成功的次数。

……
Oct 18 13:02:35.049 2005@Connect 192.21.134.10 success.
……
Oct 19 10:58:35.018 2005@Connect 119.53.21.88 success.
……
Oct 19 12:58:35.018 2005@Connect 60.21.134.10 failed.
Oct 19 13:40:37.627 2005@Connect 171.22.15.4 success.
Oct 19 13:43:47.017 2005@Connect 162.55.12.76 failed.
……
Oct 19 14:02:35.049 2005@Connect 192.21.45.110 success.
Oct 19 15:27:24.049 2005@Connect 221.23.14.130 failed.
……
Oct 20 15:21:54.113 2005@Connect 143.43.15.33 success.
……
$ awk 'BEGIN{if($NF~success)num++}END{print "Total success connection : "num}' log.txt  

用上面的命令执行后,输出num是1,这是怎么回事,大家帮帮忙啊!!!


------解决方案--------------------
BEGIN是扫描文件开始前的准备, 就执行一次, 根本没有NF变量.

你应该在BEGIN{}里将num初始化为0, 然后在{}里做NF检查和num++, 最后在END里打印结果。
------解决方案--------------------
google了一下,貌似这个可以:
Python code
awk -F" " 'BEGIN {num=0} {if($NF=="success.") num++} END {print num}' log.txt

------解决方案--------------------
如果是我,就
$(grep success|wc -l)