1. 程式人生 > >統計詞頻

統計詞頻

寫一個 bash 指令碼以統計一個文字檔案 words.txt 中每個單詞出現的頻率。

為了簡單起見,你可以假設:

words.txt只包括小寫字母和 ’ ’ 。
每個單詞只由小寫字母組成。
單詞間由一個或多個空格字元分隔。
示例:

假設 words.txt 內容如下:

the day is sunny the the
the sunny is is
你的指令碼應當輸出(以詞頻降序排列):

the 4
is 3
sunny 2
day 1
說明:

不要擔心詞頻相同的單詞的排序問題,每個單詞出現的頻率都是唯一的。
你可以使用一行 Unix pipes 實現嗎?

解答:
#cat tmp | sed ‘s/ /\n/g’ | sed ‘/^$/d’ | sort | uniq -c | awk ‘{print $2,$1}’ | sort -rnk2

#cat tmp | awk ‘{for(i=1;i<=NF;i++) print $i}’ | sort | uniq -c | sort -r| awk ‘{print $2,$1}’