awk を使用して、テキスト内の特定の単語のインスタンス数を計算します。

awk を使用して、テキスト内の特定の単語のインスタンス数を計算します。

words_of_interest.txtawk1行に1つの単語があるファイルがある場合は、1回のパスのみを使用して別のテキストファイルで各単語の発生回数を取得する方法(または他の* nixツール)がありますか?my_text.txt

現在、grep -cテキストを単語ごとに検索していますが、テキストが大きく、検索する単語が数百個あるため、速度が非常に遅いです。

編集:提供されるサンプル入力と出力:

[words_of_interest.txt]
joe
hi

[my_text.txt]
hi joe
hi jack
nice day today

[output]
joe 1
hi 2

EDIT2:この質問を重複してマークしたユーザーの場合:指摘された問題はそれは計算に関するものですみんな単語、これは事前定義された特定の単語セットのインスタンスのみを計算することです。

ベストアンサー1

my_text.txt固定文字列検索とスペースawkに関連する単純なシナリオの場合words_of_interest.txt

awk 'NR == FNR{a[$0]; next}; $0 in a{b[$0]++}; 
    END{for (k in b) print k, b[k]}' words_of_interest.txt RS='[[:space:]]+' my_text.txt
hi 2
joe 1

おすすめ記事