テキストファイル内の単語の出現回数を数える


31

ツイートを含むテキストファイルがあり、ツイートで単語が言及された回数をカウントする必要があります。たとえば、ファイルには次のものが含まれます。

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が使用されますか?これらの両方は、ツイートでいっぱいの大きなファイルで異なる結果をもたらし、私はそれがどのように機能するかについて混乱しています。発生をカウントする正しい方法はどれですか?


cut -f1タブに基づいてカットしていますが、ここではあまり効果がありません。それwc -lは本当にあなたに正しい数を与えていると確信していますか?ここには2が表示されますが、「iPhone」のインスタンスを3つカウントします。
ジェフシャラー


回答:


54

このような要件がある場合、GNU grep(-oオプション用)を使用し、それを通過させてwc、オカレンスの総数をカウントします。

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

grep -cデータのプレーンは、一致する単語の総数ではなく、一致するの数をカウントします。オプションを使用すると、grepは、一致が何度行にあるかに関係なく、各一致をオンラインで出力します。-o

wc -lwc行数をカウントするようユーティリティに指示します。grepが各一致を独自の行に入れた後、これは入力内の単語の出現総数です。


GNU grepが利用できない(または望まない)場合は、入力を変換しtrて、各単語がそれぞれの行にあるようにしてgrep -cから、カウントに使用できます。

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

1

最も簡単な方法は、

grep -wc "your_text" FileName

あなたにとっては

grep -wc "iPhone" Tweet_Data

非常にきれいな答えですが、「クール」などの単語に一致する場合は、ccoollではなくcoolにのみ一致するため、単語の周りのスペースに注意してください。
ジェイソンレオンハルト

1
単語が1行に2回以上現れると、結果は不正確になります。
hek2mgl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.