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

posted @ 2021-04-14 13:38  zhudaheng123  阅读(488)  评论(0)    收藏  举报