Shell-Script
對文件中的單詞進行排序
我有一些我無法克服的問題。我需要計算第一個讓我們說文本文件中的 N 個單詞。然後,我必須按降序列印它們,然後是出現次數。單詞必須按字母順序排序。
例如,如果我出現了 6 次單詞“ a ”,出現了 5 次單詞**“b”,出現了 5 次單詞c**,並且 n 為 2,我將列印:
一個 6
b 5
如果我有 10 個單詞 “la” , 5 個單詞 “hi” , 5 個 “zzz” 和 5 個 “arr” ,並且 n 給出為 3 ,我將列印:
10
5
嗨 5
(故意省略了 zzz)。
問題是我的腳本(如下)只列印每個出現次數的一個單詞。
tr [:space:] '\n' <$1| uniq -c|sort -rnuk1,1|awk '{print $2,$1}'|head -n
作為一個額外的功能,我希望腳本在文件的前 m 行中搜尋單詞的出現次數。
你的使用
tr
很聰明。但是你需要sort
在使用之前uniq
,因為uniq
只看相鄰的行。所以我們有cat file.txt | sort | uniq -c | sort -r | awk '{print $2, $1}' | head -n 10
此外,正如您所見,在這種情況下使用
-k
and-n
for sort 是不必要的(儘管沒有錯)。
第一個問題的答案是(如果有人感興趣?)
tr [:space:] '\n' <$1| sort |uniq -c|sort -k1rn -k2n|awk '{print $2,$1}'|head -12
我仍然不知道如何做這部分。
作為一個額外的功能,我希望腳本在文件的前 m 行中搜尋單詞的出現次數。