『转』统计一个日志文件里,单词出现频率的shell脚本

原文地址:http://blog.csdn.net/taiyang1987912/article/details/39995175

 

#查找文本中n个出现频率最高的单词  
#!/bin/bash  
count=$1                         #$1是输出频率最高单词的个数  
  
cat $2 |                         #$2是目标文本文件名称也可是是字符串  
tr -cs "[a-z][A-Z][0-9]" "\n" |  #tr是sed的简化,-c用前字符串中字符集的补集替换成后字符串即将不是字符和数字的单词替换换行  
                                 #-s删除所有重复出现换行,只保留第一个  
                                 #可以写成tr -cs "[a-z][A-Z][0-9]" "\012"或tr -cs "[a-z][A-Z][0-9]" "[\012*]"  
  tr A-Z a-z |                   #将大写字母换化为小写字母  
    sort |                       #对单词进行排序  
      uniq -c |                  #删除文本文件中重复出现的行,-c在每列旁边显示该行重复出现的次数  
        sort -k1nr -k2 |         #字符串以空格分成域,先按第一个域排序,在按第二个域排序  
                                 #-k1指定第一个域,-n按数字大写排序,-r排序结果逆向显示  
          head -n $count         #显示前n行  

 

这里的核心命令: 管道符| 、 cat  sort 、uniq -c(去重并且统计出现次数)、tr (把出现的空格[非单词] 换行)

 

$1是取的就是前几行最高频次的

$2是要查看的文本日志名称

-

posted @ 2016-05-12 22:14  根号五  阅读(635)  评论(0编辑  收藏  举报