awk - 根据4xx错误代码

时间:2017-11-10 20:02:10

标签: linux awk cat

这是我昨天发布的一个回答问题的后续问题:

awk - Find the top url based on error code

我使用昨天的答案并将其修改为仅抓取404错误代码,现在抓住所有4xx。

awk '$3 ~ /^4/{a[$2]++}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 '$3 ~ /^4/{a[$2]++}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

1 个答案:

答案 0 :(得分:0)

$ awk '$3~/^4/{a[$2 FS $3]++} 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