shell命令为何没有结果?

来源:3-1 Shell日志分析之脚本如何加入功能注释

Joyven

2016-03-06 00:32

sudo sh check_http_log.sh 
 
********HTTP状态码分析统计脚本********
http状态码为[100+]:  0
http状态码为[200+]:  269
http状态码为[300+]:  10
http状态码为[400+]:  6804
http状态码为[500+]:  0
http总请求:  7083
(*@ο@*) 哇~脚本处理结束!
http状态为[404]:  6741
http状态为[403]:  0
总共请求次数:  7083

sudo sh check_http_log.sh|grep -ioE "\[[1-5][0]{2}\+\]\:[[:blank:]]+[0-9]+"|awk -F"[ ]+" '{print $2}'

这条命令我想输出脚本执行后的具体的请求次数,但发现什么都没有,主要原因是在于[0-9]+这地方,根据我的理解,这么写应该是有结果,但现在什么都没输出。

如果我这么执行,则会输出结果:

sudo sh check_http_log.sh|grep -ioE "\[[1-5][0]{2}\+\]\:[[:blank:]]+"|awk -F"[ ]+" '{print $1}'
[100+]:
[200+]:
[300+]:
[400+]:
[500+]:

请问如何才能拿到后面的具体数字,比如上面脚本文件输出的是

http状态码为[100+]:  0
http状态码为[200+]:  269
http状态码为[300+]:  10
http状态码为[400+]:  6804
http状态码为[500+]:  0

我希望,再次拿到

0
269
10
6804
0

还有一个问题,我单独执行下面这条命令,是可以拿到数据的:

echo "http状态码为[200+]:  266"|grep -ioE "\[[1-5][0]{2}\+\]\:[[:blank:]]+[0-9]+"|awk -F"[ ]+" '{print $2}'
266

结果是266,是我希望的。

为什么,执行开始说的这条命令(即下面的命令)不行呢?

sudo sh check_http_log.sh|grep -ioE "\[[1-5][0]{2}\+\]\:[[:blank:]]+[0-9]+"|awk -F"[ ]+" '{print $2}'


写回答 关注

2回答

  • 木狸克
    2016-05-30 10:31:17

    冒号后面的空格有两个

  • luckyforever
    2016-03-22 20:45:25

    bash csh ksh sh

Shell典型应用之应用日志分析

如何应用shell脚本分析系统日志,这门视频教程会给你答案

30773 学习 · 11 问题

查看课程

相似问题