複数のパターンをgrepし、一致するパターンを使用して結果を印刷します。

複数のパターンをgrepし、一致するパターンを使用して結果を印刷します。

複数の値を持つ複数のファイルを探しています。 例えば: grep -f filename.txt /home/* -R
(filename.txtには複数の値が含まれています)

ただし、どのファイルにどの値が含まれているかを知る必要があります。
例えば:/home/blah.txt には value1 が含まれ、/home/aaa.txt には value2 が含まれます。

どんな提案がありますか?

ベストアンサー1

提供されたフラグのいくつかを使用してこれを行うことができますgrep

次のコマンドを試すことができます。

grep -R -f filename.txt /home/*ファイル内のすべてのパターンが検索され、filename.txtホームフォルダ内のすべてのファイルに対して繰り返し一致します。次のような出力が得られます。

#here my filename contains the entries bash and Bingo
$grep -R -f filename.txt /home/*
/home/user/.bash_history:vi .bashrc
/home/user/.bash_history:vi .bashrc
/home/user/.bash_history:awk -v RS=END_WORD '/Bingo1/ && /Bingo2/' test2.txt | grep -o 'Pokeman.*'

grepファイル名とパターンを含む行全体を出力します。

見つかったパターンのみを表示するには、以下を試してください。

#here the -o flag only displays the matched values, and -n adds the line number
$grep -R -o -n -f test /home/*
/home/user/.bash_history:128:bash
/home/user/.bash_history:156:bash
/home/user/.bash_history:193:Bingo

おすすめ記事