快速统计日志文件里点击量前十位的URL

时间:2010-1-10     作者:smarteng     分类: Linux命令


关于shell命令,网上流传着很多奇技淫巧,比如说快速统计日志文件里点击量前十位的URL: awk '{print $7}' /path/to/log | sort | uniq -c | sort -nr | head -n 10 附:这里假设日志文件是common格式的,如此一来,按空格分隔后,第七个字段就是URL 稍加思考,你会发现这里又是sort,又是uniq,存在重复操作,下面看看如何优化这条shell命令: 01 #!/bin/awk -f 02 03 { 04 url[$7]++ 05 } 06 07 END { 08 for (key in url) { 09 print url[key], key | "sort -nr | head -n 10" 10 } 11 } 把上面代码(去掉行号)保存到demo.awk文件里,然后:chmod +x ./demo.awk,做这些就够了。 我找了一个7G的common格式日志文件来测试性能,视服务器性能结果会有差异,但相对值应该差不多: time awk '{print $7}' /path/to/log | sort | uniq -c | sort -nr | head -n 10 real 1m57.150s user 1m6.794s sys 0m13.923s time ./demo.awk /path/to/log real 1m21.414s user 0m32.799s sys 0m22.556s 总体消耗的时间降低了四分之一,还是很明显的。