로그 파일에서 사용자 에이전트 문자열을 추출하는 방법은 무엇입니까?

로그 파일에서 사용자 에이전트 문자열을 추출하는 방법은 무엇입니까?

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

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보다 더 좋은 도구가 있나요?

답변1

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

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

또는:

cut -d\" -f 6

답변2

perl -ne 'if(/"([^"]+)"$/){$ua{$1}++;} END{for(keys %ua){print "$ua{$_} $_\n "}}'\
  액세스 로그

관련 정보