2017-11-10 4 views
0

이 대답했다 어제 게시 한에서 후속 질문 :AWK - 4XX 오류 코드를 기반으로 상위 URL을 찾기

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

보인다. 감사! –