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

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行に複数回出現する場合、結果は正しくありません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です