ツイートを含むテキストファイルがあり、ツイート内で単語が言及された回数をカウントする必要があります。たとえば、ファイルには次のものが含まれています。
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を使用して( -o
オプションの場合)、次にパススルーします div id = “11179d1ef8″>
発生の総数をカウントするには:
$ 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
回答
最も簡単な方法は
grep -wc "your_text" FileName
あなたにとってはそうなるでしょう
grep -wc "iPhone" Tweet_Data
コメント
- ただし、 ' cool 'のような単語に一致する場合は、coolのみに一致し、ccoollには一致しないため、単語の周囲のスペースに注意してください。
- 単語が1行に複数回出現する場合、結果は正しくありません。
cut -f1
は以下に基づいてカットしていますタブは、'ここではあまり機能していません。wc -l
が本当に正しいカウントを提供していると確信していますか?ここでは2つ表示されますが、" iPhone "のインスタンスを3つ数えます。