如何从日志文件中提取用户代理字符串?

如何从日志文件中提取用户代理字符串?

目前我正在运行这样的命令,以获取最请求的内容:

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 “}}'\
  访问日志

相关内容