我有 nginx 日志文件,我想找出每个主要浏览器版本的市场份额。我对次要版本和操作系统不感兴趣。我希望得到如下结果:
100 IE6
99 IE7
20 IE8
200 FF2
300 FF3
我知道如何从文件中获取用户代理列表,但我想汇总列表以仅查看浏览器的主要版本。 有没有可以做到这一点的工具?
答案1
awk -F'"' '/GET/ {print $6}' /var/log/nginx-access.log | cut -d' ' -f1 | sort | uniq -c | sort -rn
awk(1)
- 选择 GET 请求的完整 User-Agent 字符串cut(1)
- 使用其中的第一个单词sort(1)
- 排序uniq(1)
- 数数sort(1)
- 按计数排序,反向
PS. 当然可以用一个awk
/ sed
/ perl
/ python
/etc 脚本来代替。我只是想展示一下 unix-way 有多丰富。
答案2
虽然SaveTheRbtz 的一句话完成这项工作,花了几个小时来解析我的nginx
访问日志。
下面是基于他的一个更快的版本,每 100MB 日志文件(对应约 100 万行)花费不到 1 分钟:
sed -n 's!.* "GET.* "\([[:alnum:].]\+/*[[:digit:].]*\)[^"]*"$!\1!p' /var/log/nginx/access.log | sort | uniq -c | sort -rfg
它使用 的默认访问日志格式,该格式与Apache 的格式nginx
相同,并以作为最后一个字段,用 分隔。combined
httpd
User-Agent
"
答案3
获取用户代理
sudo awk -F"\"" '{print $6}' /var/log/nginx/access.log | sort | uniq -dc
答案4
统计信息系统应该可以解决问题,但会提供更多信息。希望这能有所帮助...