/var/log/apache2/other_vhosts_access.log
다음과 같은 파일이 주어지면:
example.com:443 1.1.1.1 - - [25/Jan/2021:12:00:00 +0000] "GET /abc/def/ghi?token=jklm12 HTTP/1.1" 200 1000 "-" "Mozilla/5.0 (Macintosh; Intel...
example.com:443 2.2.2.2 - - [25/Jan/2021:12:00:00 +0000] "GET /abc/def/ghi?token=jklm13 HTTP/1.1" 200 1000 "-" "Mozilla/5.0 (Macintosh; Intel...
example.com:443 33.33.33.33 - - [25/Jan/2021:12:00:00 +0000] "GET /abc/def/ghi?token=jklm14 HTTP/1.1" 200 1000 "-" "Mozilla/5.0 (Macintosh; Intel...
example.com:443 4.4.4.4 - - [25/Jan/2021:12:00:00 +0000] "GET /abc/def/ghi?token=jklm12 HTTP/1.1" 200 1000 "-" "Mozilla/5.0 (Macintosh; Intel...
URL을 "기준"으로 그룹화한 IP를 집계하는 방법은 무엇입니까?
예:
/abc/def/ghi?token=jklm12
1.1.1.1
4.4.4.4
/abc/def/ghi?token=jklm13
2.2.2.2
/abc/def/ghi?token=jklm14
33.33.33.33
특정 열을 추출 하는 데 사용할 수 있다는 것을 알고 있지만 awk
"그룹화"를 수행하는 방법은 무엇입니까?
답변1
awk '{a[$8]=a[$8] "\n\t" $2} END{for (url in a) print url, a[url]}' file
배열은 a
처음에는 비어 있습니다.
{a[$8]=a[$8] "\n\t" $2}
a[$8]
줄 바꿈과 탭으로 요소의 값을 확장한 다음 두 번째 필드를 확장합니다.END
이 블록은 전체 파일을 구문 분석한 후에만 실행됩니다. 배열의 각 키에 대해 키(url
) 및 관련 값( )이 인쇄됩니다.a[url]
산출:
/abc/def/ghi?token=jklm14
33.33.33.33
/abc/def/ghi?token=jklm12
1.1.1.1
4.4.4.4
/abc/def/ghi?token=jklm13
2.2.2.2