Shell-Script

對文件中的單詞進行排序

  • August 7, 2016

我有一些我無法克服的問題。我需要計算第一個讓我們說文本文件中的 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

此外,正如您所見,在這種情況下使用-kand -nfor sort 是不必要的(儘管沒有錯)。

第一個問題的答案是(如果有人感興趣?)

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

我仍然不知道如何做這部分。

作為一個額外的功能,我希望腳本在文件的前 m 行中搜尋單詞的出現次數。

引用自:https://unix.stackexchange.com/questions/255761