Linuxでカウンターを使用して最も一般的な単語をファイルに書き込む

Linuxでカウンターを使用して最も一般的な単語をファイルに書き込む

テキスト内に少なくとも X 回出現する単語をファイルに書き込みたい。たとえば、次のようになります。

a
b
a
c
b

X = 2 の場合、次のようになります。

a
b

答え1

これは基本的な処理を実行しますが、大きな単語リストでは非常に遅くなります:-

set Count
sort < WordList | uniq | while read w; \
    do [ $(grep -c "^$w$" WordList) -ge $1 ] && echo $w; done

より速い回答(Kamil Maciorowski 氏に感謝):-

set Count
sort < WordList | uniq -c | while read c w; do [ $c -ge $1 ] && echo $w; done

これは次のことを前提としています:-

  • ご自身FileListCountエントリーを設定していただきます。
  • 単語は 1 行に 1 つずつありますWordList
  • 大文字と小文字は区別されます (例:Theと はthe異なります)。
  • これはコマンドラインエントリです。スクリプトではset Count省略され、パラメータとして渡されます。

これで作業を開始できるはずですが、正確なニーズに合わせて変更する必要があることはほぼ間違いありません。

関連情報