免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1776 | 回复: 8
打印 上一主题 下一主题

[文本处理] shell 如何更高效的处理top10问题呢? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-11-01 19:33 |只看该作者 |倒序浏览
非常常见的问题,比如一个很大很大的日志文件,要统计出出现次数最多的IP数量,找出top10

常见的方法是直接sort|head -10

如果文件大了的话  就先split  再sort -m|head -10

两种方法其实都是做了排序的   有没有什么更快的方法呢?

除了使用hadoop下的pig脚本进行数据统计。


求教啊!

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
2 [报告]
发表于 2012-11-01 22:31 |只看该作者
  1. [root@IMG01 logs]# grep -c "." access.log
  2. 6208898
  3. [root@IMG01 logs]# time awk '{a[$1]+=1};END{for(i in a)print i,a[i]}' access.log |sort -nr -k2,2|head -10
  4. 221.199.206.68 398592
  5. 119.147.74.172 224457
  6. 119.147.6.170 222899
  7. 119.147.6.162 221070
  8. 119.147.6.158 220960
  9. 119.147.6.157 220415
  10. 119.147.6.148 213430
  11. 14.105.228.69 208828
  12. 183.63.148.42 168526
  13. 114.91.143.13 157362

  14. real        0m3.335s
  15. user        0m3.042s
  16. sys        0m0.295s
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-11-02 09:43 |只看该作者
  太给力了!   回复 2# dn833


   

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
4 [报告]
发表于 2012-11-02 11:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2012-11-02 11:50 |只看该作者
但如果文件再大点呢? 比如是20G的日志呢? 回复 2# dn833


   

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
6 [报告]
发表于 2012-11-02 14:57 |只看该作者
回复 4# zooyo

zooyo,我不太理解为什么你这种理论上应该比较快的方法反而慢了呢?
  1. [root@01 logs]# time awk '{a[$1]++}END{l=asort(a,b);for(i=l;i>l-10;i--){for(j in a){if(a[j]==b[i])print j}}}' access.log
  2. 119.2.8.195
  3. 221.199.206.68
  4. 119.147.6.170
  5. 119.147.74.172
  6. 119.147.6.158
  7. 119.147.6.157
  8. 119.147.6.162
  9. 119.147.6.148
  10. 14.105.228.69
  11. 183.63.148.42

  12. real        0m7.354s
  13. user        0m6.051s
  14. sys        0m0.583s
  15. [root@01 logs]# time awk '{a[$1]+=1};END{for(i in a)print i,a[i]}' access.log |sort -nr -k2,2|head -10
  16. 119.2.8.195 464052
  17. 221.199.206.68 398591
  18. 119.147.74.172 285922
  19. 119.147.6.170 285890
  20. 119.147.6.158 284856
  21. 119.147.6.157 283061
  22. 119.147.6.162 282853
  23. 119.147.6.148 273743
  24. 14.105.228.69 208827
  25. 183.63.148.42 168525

  26. real        0m5.748s
  27. user        0m5.238s
  28. sys        0m0.508s

  29. [root@01 logs]# du -h access.log
  30. 2.2G        access.log
复制代码

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
7 [报告]
发表于 2012-11-02 16:07 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
8 [报告]
发表于 2012-11-02 16:09 |只看该作者
回复 7# zooyo


    比较奇怪为什么少用管道了反而慢。。。。。。

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
9 [报告]
发表于 2012-11-02 16:11 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP