对 n 行中的单词进行排序

对 n 行中的单词进行排序

我需要打印给定文件中前 n 行的所有唯一单词及其出现次数。我必须按出现次数排序,然后按字母顺序排序。(唯一的分隔符是“”)例如:对于以下 5 行:

嘿嘿嘿嘿嘿嘿

你好你好

啊啊啊

BB

A

我将打印

黑5

氨基酸2

乙2

你好2

一个 1

到目前为止我的脚本是:

tr -c [:space:] '\n' <$1|head -n $number_of_rows| sort |uniq -c|sort -k1rn -k2n|awk '{print $2,$1}'

答案1

如果您知道每一行都由重复多次的单个单词组成,您可以执行以下操作:

awk -v n=$number_of_rows '
    NR == n+1 {exit} 
    {print $1, NF}
' file | sort -k2,2rn -k1,1

相关内容