ファイル/行で特定の単語が何回言及されたかを確認したい。
私のダミーの例は次のようになります。
cat words
blue
red
green
yellow
cat text
TEXTTEXTblueTEXTTEXTblue
TEXTTEXTgreenblueTEXTTEXT
TEXTTEXyeowTTEXTTEXTTEXT
私はこれをやっています:
for i in $(cat words); do grep "$i" text | wc >> output; done
cat output
2 2 51
0 0 0
1 1 26
0 0 0
しかし、私が実際に取得したいのは次のとおり
です。1.変数として使用された単語。
2. (テキストヒットに加えて) 何行で単語が見つかったか。
好ましい出力は次のようになります。
blue 3 2
red 0 0
green 1 1
yellow 0 0
$1 - grep
された変数 $2 - テキスト内で変数が見つかった回数
$3 - 変数が見つかった行数
grep、awk、sed は大規模なデータ セットに対して十分に高速であるため、誰かがこれを行うのを手伝ってくれることを願っていますが、Perl のワンライナーも役に立ちます。
編集
これを試した
for i in $(cat words); do grep "$i" text > out_${i}; done && wc out*
ちょっと見栄えはいいのですが、一部の単語は300文字を超えているため、単語のような名前のファイルを作成できません。