- 论坛徽章:
- 0
|
本帖最后由 qqjue 于 2010-06-15 00:04 编辑
上次发贴只是带着对bash有疑惑有"不满".解决不了我想要解决的问题.所以总有点抵触,为此不想在BASH上下功夫,看了几天perl,最后觉得这样有点偏了,我是学linux的.不是学编程的.虽然学了perl会对日常维护有帮助,但就整个shell,我们也只学了5天而已,这不是重点,只是基础的一小部分.我们学习的进度很快,常用命令,shell,dhcp,httpd,namd,samba,vsftpd,troubleshooting,U盘LINUX,无人值守安装,无盘linux,智能DNS....今天放假,没去上课,有时间刚好解决了以前一直困绕着我的一个问题. 就是一个2G的文件,找出里面出现次数最多的前10个单词.
如果是找英文单词, 先用- sed -i 's/[^a-Z]/ /g' filename
复制代码 如果处理的中文 先用- export LANG=zh_CN.UTF8 sed -i 's/./& /g' filename
复制代码 然后用awk 处理 代码如下- BEGIN{
- top=15
- }
- { for (i=1;i<=NF;i++) statistic[$i]++}
- END{
- for (i=1;i<=top;i++) {max[i]=0;words[i]=""}
- for (word in statistic)
- {
- for (i=1;i<=top;i++)
- { if (statistic[word]>max[i])
- {
- for(j=top;j>i;j--)
- {max[j]=max[j-1];
- words[j]=words[j-1];
- }
- max[i]=statistic[word];
- words[i]=word;
- break
- }
- }
- }
- for(i=1;i<=top;i++) print i"---->"words[i]":"max[i]
- }
复制代码 处理 250M文件 用时20秒. 2G的估计5分钟左右就能搞定.shell 只是linux中的一部分,虽然它很重要,但也没必要在这个上面浪费太多精力.还有很多东西可以去钻研.高级路由,SQL,系统调优,最后的难点是集群!! |
评分
-
查看全部评分
|