Linux 命令 shell 脚本

问题描述 投票:0回答:1

我正在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

小时计数相应列中的错误代码[文本](this is my current output but it is not working for me I wants the data as I shown example above )

linux file awk command echo
1个回答
0
投票
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
© www.soinside.com 2019 - 2024. All rights reserved.