Text-Processing

計算文本文件中單詞的出現次數

  • July 13, 2020

我有一個包含推文的文本文件,我需要計算推文中提到某個單詞的次數。例如,該文件包含:

Apple iPhone X is going to worth a fortune
The iPhone X is Apple's latest flagship iPhone. How will it pit against it's competitors?

假設我想計算文件中提到 iPhone 這個詞的次數。所以這就是我嘗試過的。

cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l

它確實有效,但我對 unix 中的“wc”命令感到困惑。如果我嘗試類似的東西有什麼區別:

cut -f 1 Tweet_Data | grep -c "iPhone"

在哪裡使用 -c 代替?這兩種方法都會在一個充滿推文的大文件中產生不同的結果,我對它的工作原理感到困惑。哪種方法是計算發生次數的正確方法?

鑑於這樣的要求,我將使用 GNU grep(用於-ooption),然後通過它wc來計算出現的總數:

$ grep -o -i iphone Tweet_Data | wc -l
3

簡單grep -c的數據將計算匹配的行數,而不是匹配的**單詞總數。使用該-o選項告訴 grep 在其自己的行上輸出每個匹配項,無論匹配項在原始行中找到多少次。

wc -l告訴wc實用程序計算行數。在 grep 將每個匹配項放在自己的行之後,這是輸入中單詞的出現總數。


如果 GNU grep 不可用(或不需要),您可以轉換輸入,tr使每個單詞都在自己的行上,然後用於grep -c計數:

$ tr '[:space:]' '[\n*]' < Tweet_Data | grep -i -c iphone
3

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