当前位置: 技术问答>linux和unix
awk编程问题
来源: 互联网 发布时间:2017-03-17
本文导语: 用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.62...
用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,这是怎么回事,大家帮帮忙啊!!!
……
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,这是怎么回事,大家帮帮忙啊!!!
|
google了一下,貌似这个可以:
awk -F" " 'BEGIN {num=0} {if($NF=="success.") num++} END {print num}' log.txt
|
BEGIN是扫描文件开始前的准备, 就执行一次, 根本没有NF变量.
你应该在BEGIN{}里将num初始化为0, 然后在{}里做NF检查和num++, 最后在END里打印结果。
你应该在BEGIN{}里将num初始化为0, 然后在{}里做NF检查和num++, 最后在END里打印结果。
|
如果是我,就
$(grep success|wc -l)
$(grep success|wc -l)