grepを使用してファイルのパターンを処理し、各パターンの発生回数を取得するにはどうすればよいですか?

grepを使用してファイルのパターンを処理し、各パターンの発生回数を取得するにはどうすればよいですか?

fileA.txtのパターンでgrepを使用し、fileB.tabで検索する方法を見つけようとしています。私が望む結果は、fileB.tabの各パターンが発生した回数です。

私は試した:

grep -f FileA.txt FileB.tab | wc -l

しかし、これはfileA.tabパターンが発生するFileB.tabのすべての行を返すと思います。

ベストアンサー1

patternsファイルに固定文字列のみが含まれている場合は、gnu設定で次のことができます。

grep -oFf patterns infile | sort | uniq -c

内容が正規表現なら、次のようになります。

sed -E 'h;s|/|\\&|g;x;s|[\&/]|\\&|g;H;x;s|(.*)\n(.*)|s/\1/\2/|' patterns \
| sed -f - <(grep -of patterns infile)  | sort | uniq -c

つまり、grep今回のみ同じコマンドを使用して結果を処理し、一致が実際のsedパターンに置き換えられるようにします(sedコンテンツに基づく他のスクリプトを介してpatterns)。

おすすめ記事