为了账号安全,请及时绑定邮箱和手机立即绑定

shell命令为何没有结果?

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 回答

冒号后面的空格有两个

0 回复 有任何疑惑可以回复我~

bash csh ksh sh

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Shell典型应用之应用日志分析
  • 参与学习       30730    人
  • 解答问题       11    个

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

进入课程

shell命令为何没有结果?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信