로그 파일에서 사용자 에이전트 문자열을 어떻게 추출합니까?


12

현재 가장 요청이 많은 콘텐츠를 얻기 위해 다음과 같은 명령을 실행하고 있습니다.

grep "17\/Jul\/2011" other_vhosts_access.log | awk '{print $8}' | sort | uniq -c | sort -nr

이제 사용자 에이전트 문자열을보고 싶지만 문제는 몇 개의 공백이 포함되어 있다는 것입니다. 다음은 일반적인 로그 파일 줄입니다. UA는 따옴표로 구분 된 마지막 섹션입니다.

example.com:80 [ip] - - [17/Jul/2011:23:59:59 +0100] "GET [url] HTTP/1.1" 200 6449 "[referer]" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30"

이것을 위해 awk보다 더 좋은 도구가 있습니까?

답변:


19

해당 형식이 일관되고 필드가 실제로 큰 따옴표로 묶인 경우 awk 또는 cut을 "필드 구분 기호로 사용할 수 있습니다 .

awk -F\" '{print $6}'

또는:

cut -d\" -f 6

3
perl -ne 'if (/ "([^"] +) "$ /) {$ ua {$ 1} ++;} END {for (keys % ua) {print"$ ua {$ _} $ _ \ n "}} '\
  access_log
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.