提问人:user3318024 提问时间:8/4/2023 最后编辑:markp-fusouser3318024 更新时间:8/7/2023 访问量:54
Linux 命令 shell 脚本
Linux command shell script
问:
我正在Linux日志文件中搜索,其中包含一些错误代码,我想每小时计算一次这些代码,但我的要求是响应代码应以以下形式显示。在附加文件数据未满足我的要求时,任何人都可以对此提供帮助。我当前的命令
对于示例日志 -:
IP web.com - [01/Aug/2023:01:27:21 +0200] "POST /aa/v1/bbb/session?device_id=urn:uuid:2972033-34a4-4d1c-8ctt-55d31140c09d HTTP/1.1" 503 0 "-" "IOS/2.1.0 (Linux; U; Android 8.1.0; ttw Build/OTT 1.171019.011)"
法典-:
for i in {00..23} ; do grep "pattern" access.log |grep "03/Aug/2023:$i" |awk -F " " '{print $4,$9}' |awk '{print $NF}'|sort |uniq -c ; done
91 200
1 429
46 200
1 503
11 200
4 200
7 200
9 200
37 200
1 403
在此输出中,获取响应代码计数,但我想要另外一列,该列在上述数据之前有几个小时。例如
hrs Counts Response code
00 91 200
00 1 429
01 46 200
01 1 503
02 11 200
小时计算相应列中的错误代码[text](这是我当前的输出,但它对我不起作用,我想要上面显示的示例中的数据 )
答:
1赞
ufopilot
8/5/2023
#1
awk -v pattern="some pattern" -v day='01/Aug/2023' '
$0 ~ pattern && $4 ~ day {
split($4,a,":")
codes[a[2]" "$9]++
}
END{
for (i in codes){
split(i,b)
print b[1], codes[i], b[2]
}
}
' access.log
01 4 503
02 1 200
02 1 404
02 2 503
03 1 200
评论
0赞
user3318024
8/7/2023
这段代码可以工作,但不是以预期的方式,你只是grep时间并只拿起响应代码,但我需要另一个模式“grep”模式“访问.log,请检查我上面的命令。希望你能理解我的期望。
0赞
ufopilot
8/7/2023
@user3318024:好的,我没看到。查看我的更新grep "pattern" access.log
评论