我有一个网络服务器日志文件,我必须创建一个命令行管道来显示最常访问的十个页面。
然后我必须将它嵌入到 shell 脚本中。
日志格式是这样的:
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
答案1
那个怎么样:
grep -oP 'GET \K.*(?=HTTP)' file | sort | uniq -c | sort -rnk1 | head
- 正
grep
则表达式捕获GET
和HTTP
字符串之间的所有内容。 sort
然后对输出进行排序uniq
数他们sort
再次降序,数字只有第一个字段。head
仅打印前 10 行(访问次数最多的 10 个 URL)
答案2
使用“webalizer”或“awstats”等成熟工具怎么样?您可以处理这两个工具之一的输出。