linux命令實現詞頻統計


問題

給定示例文件test.txt如下,對第一列做詞頻統計並排序 。

hello marry
max thread
hello lihua
max apple
max code
nasa connection

解答

切割->分組->排序,cat test.txt | cut -d ' ' -f1 | sort | uniq -c | sort -k 1

      1 nasa
      2 hello
      3 max

注意:上面在分組前進行一次sort操作並不是多餘的,假如不sort,uniq只會對相鄰相同的單詞分組。


拓展

獲取不重複的word個數

cat test.txt | cut -d ' ' -f1 | sort | uniq -c | wc -l

3

大數據環境

上述的wordcount在海量數據情況下適用嗎?答:並不適用。因爲sort命令採用了歸併排序,排序時候的臨時小文件是默認放在/tmp路徑下的,有時候/tmp的空間有限制,比如4G,那麼,超過4G的文件就沒有辦法用sort了。當然也可以用sort -T Path 來臨時文件的目錄。見參考博文1。


參考

[1] 大數據量下的sort-linux

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章