2017-11-10 182 views
0

這是一個我昨天張貼在回答了一個跟進的問題:AWK - 尋找基於4xx錯誤代碼的頂部網址

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 

回答

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 
+0

看起來這個工作。謝謝! –