目前我正在运行这样的命令,以获取最请求的内容:
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 “}}'\ 访问日志