查找文本中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运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值