awk - 根据 4xx 错误代码查找顶部 url
awk - Find the top url based on 4xx error code
这是我昨天发布的那个问题的后续问题,已回答:
我使用了昨天的答案并将其从仅抓取 404 错误代码修改为现在抓取所有 4xx。
awk ' ~ /^4/{a[]++}END{for(url in a){print a[url], url}}' samplelog.txt | sort -rn
这确实有效,但现在我想要更精细的输出。现在它将所有 4xx 组合在一起,例如 403 和 404 将被计为 2,而不是唯一的。我希望能够计算所有 4xx,然后通过它们的唯一代码将它们分开。
示例日志:
GET /foo 404
GET /foo 200
GET /foo 404
GET /foo 404
GET /foo 400
GET /foo 403
GET /foo 403
GET /bar 200
GET /bar 400
GET /foobar 404
GET /foobar 200
GET /foobar 404
GET /foobar 403
当前脚本的结果(同上)
awk ' ~ /^4/{a[]++}END{for(url in a){print a[url], url}}' samplelog.txt | sort -rn
6 /foo
3 /foobar
1 /bar
想要的结果
3 /foo 404
2 /foo 403
2 /foobar 404
1 /foo 400
1 /bar 400
1 /foobar 403
$ awk '~/^4/{a[ FS ]++} END{for(k in a) print a[k],k}' file |
sort -k1,1nr -k2,2
3 /foo 404
2 /foo 403
2 /foobar 404
1 /bar 400
1 /foo 400
1 /foobar 403
这是我昨天发布的那个问题的后续问题,已回答:
我使用了昨天的答案并将其从仅抓取 404 错误代码修改为现在抓取所有 4xx。
awk ' ~ /^4/{a[]++}END{for(url in a){print a[url], url}}' samplelog.txt | sort -rn
这确实有效,但现在我想要更精细的输出。现在它将所有 4xx 组合在一起,例如 403 和 404 将被计为 2,而不是唯一的。我希望能够计算所有 4xx,然后通过它们的唯一代码将它们分开。
示例日志:
GET /foo 404
GET /foo 200
GET /foo 404
GET /foo 404
GET /foo 400
GET /foo 403
GET /foo 403
GET /bar 200
GET /bar 400
GET /foobar 404
GET /foobar 200
GET /foobar 404
GET /foobar 403
当前脚本的结果(同上)
awk ' ~ /^4/{a[]++}END{for(url in a){print a[url], url}}' samplelog.txt | sort -rn
6 /foo
3 /foobar
1 /bar
想要的结果
3 /foo 404
2 /foo 403
2 /foobar 404
1 /foo 400
1 /bar 400
1 /foobar 403
$ awk '~/^4/{a[ FS ]++} END{for(k in a) print a[k],k}' file |
sort -k1,1nr -k2,2
3 /foo 404
2 /foo 403
2 /foobar 404
1 /bar 400
1 /foo 400
1 /foobar 403