我正在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)”
对于 {00..23} 中的 i ; do grep "pattern" access.log |grep "03/Aug/2023:$i" |awk -F " " '{print $4,$9}' |awk '{print $NF}'|sort |uniq -c ;完毕 91 200 1 429 46 200 1 503 11200 4 200 7 200 9 200 37 200 1 403
在此输出中获取响应代码计数,但我想要多一列,该列在上述数据之前有几个小时。例如 小时计数 响应代码 00 91 200 00 1 429 01 46 200 01 1 503 02 11 200
awk -v day='01/Aug/2023' '
$4 ~ day {
split($4,a,":")
codes[a[2]" "$9]++
}
END{
for (i in hrs){
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