当前位置:编程学习 > 网站相关 >>

查找文本中n个出现频率最高的单词

#!/bin/bash

 

end=$1

 

cat $2 |

tr -cs "[a-z][A-Z]" "[\012*]" |

  tr A-Z a-z |

    sort |

        uniq -c |

            sort -k1nr -k2 |

               head -n "$end"

 

cat命令将文本文件的全部内容送入管道,tr命令的-c选项用于选定不在"[a-z][A-Z]"字符集内的字符,tr命令将选定的字符转换成换行符,\012是换行符的八进制码,*表示将换行符任意扩展,使其等于被替换的字符集个数。这样就将所有的非字母的符号转换为换行符,从而将文本文件以一行一个单词的形式显示出来。

然后通过一个tr命令将单词中的大写字母转换成小写字母

sort命令对一行一个单词的列表进行排序

uniq -c命令对排序好的单词列表统计每个单词出现的次数。

再用sort按照单词出现的次数从大到小排序,如果出现频率相同,则再按字母顺序排序。

最后用head输出前n行。

./shang.sh 2 a.txt运行。

 

补充:综合编程 , 其他综合 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,