linux shell命令脚本---查找文本中n个出现频率最高的单词
脚本:查找文本中n个出现频率最高的单词
MapClearTest.java文件内容
import java.util.HashMap;
class MapClearTest {
public static void main(String[] args) {
HashMap<Integer, String> sites = new HashMap<>();
sites.put(1, "Google");
sites.put(2, "Runoob");
sites.put(3, "Taobao");
System.out.println("HashMap: " + sites);
System.out.println("HashMap: " + sites.count(1));
sites.clear();
System.out.println("HashMap: " + sites);
System.out.println("HashMap: " + sites.count(0));
// 从HashMap中删除所有映射
// 重新初始化 hashmap
sites = new HashMap<>();
System.out.println("新的 HashMap: " + sites);
}
脚本内容
cat topn.sh
#!/bin/bash
end=$1 #$1是输出频率最高单词的个数
cat $2 | #$2是目标文本文件名称
tr -cs "[a-z][A-Z]" "[\012*]" | #将文本文件以一行一个单词的形式显示出来
tr A-Z a-z | #将单词中的大写字母转化为小写字母
sort | #对单词进行排序
uniq -c | #对排序好的单词列表统计每个单词出现的次数
sort -k1nr -k2 | #按出现频率排序,再按字母排序
head -n"$end" #显示前n行
./topn.sh 5 MapClearTest.java
11 hashmap
11 sites
5 out
5 println
5 system
浙公网安备 33010602011771号