查找文本中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运行。
补充:综合编程 , 其他综合 ,