grep -fで一致するパターンの代わりに一致結果が出たパターンを印刷できますか?

grep -fで一致するパターンの代わりに一致結果が出たパターンを印刷できますか?

コマンドは、最後の一致文字列ではなくgrep -f input_pat.txt match_in.txt一致パターンを印刷する方法を探しています。input_pat.txtmatched_in.txt

たとえば、次のようにinput_pat.txtなります。

abc...blahblah

そしてmatch_in.txt

abcdefblahblah

"abc...blahblah"印刷物に印刷したいです。

ベストアンサー1

grepを2回呼び出すと実行できます。少し高価ですが、作業は完了です。パターンファイルがpat.txtで、検索したいファイルがdata.txtであるとしましょう。

paste <(grep -o -f pat.txt  data.txt ) <(grep -f pat.txt data.txt )

両方のコマンドの両方の出力がファイルとして処理さ<( ... )れるように、プロセス置換を使用します。paste最初のコマンドでは、-oオプションは一致するパターンのみを印刷します。 2番目のコマンドは、完全に一致する行を印刷します。

順序は1対1なので、2つの出力を並べて貼り付けるのは安全です(grepを実行するときにスキーマファイルやデータファイルが変更されていないと仮定)。

おすすめ記事