文書内の各単語の発生回数を取得します。

文書内の各単語の発生回数を取得します。

ファイル内の各単語の数を見つける方法は?

テキストパイプラインまたは文書内の各単語のヒストグラムが必要です。ドキュメントに新しい行と空の行が表示されます。私は私の体を除いてすべてをはがしました[a-zA-Z]

> cat doc.txt 
word second third 

word really
> cat doc.txt | ... # then count occurrences of each word \
                    # and print in descending order separated by delimiter
word 2
really 1
second 1
third 1

ファイルが1GBのテキストであり、指数関数的なタイムロードを処理できないため、やや効率的でなければなりません。

ベストアンサー1

この試み:

grep -o '\w*' doc.txt | sort | uniq -c | sort -nr
  • -o一致する行の代わりに各一致を印刷します。
  • \w*単語文字の一致
  • sortパイプで接続する前に一致を並べ替えてくださいuniq
  • uniq -c一意の行と発生回数を印刷します。-c
  • sort -nr発生回数に基づいて逆順にソートします。

出力:

  2 word
  1 third
  1 second
  1 really

選ぶ:

awk正確な出力のために:

$ grep -o '\w*' doc.txt \
| awk '{seen[$0]++} END{for(s in seen){print s,seen[s]}}' \
| sort -k2r

word 2
really 1
second 1
third 1

おすすめ記事