パターンの始まりと終わりに2つの入力ファイルの行を使用して複数のファイルをgrepする方法は?

パターンの始まりと終わりに2つの入力ファイルの行を使用して複数のファイルをgrepする方法は?

grepを使用してファイルのリストを取得する簡単なスクリプトを作成したいと思います。現在のコードは次のようになります。

a= file1.txt 

b= file2.txt

for

do

grep '$a.*$b' /root/listoffiles/*php >> found.txt

完璧

file1どちらfile2も単語のリストです。したがって、複数の基準を使用して目的地を検索します。たとえば、$a「hello」と「world」になり、$b2行目が「red」と「tshirt」になります。 2つの条件が一致するものが見つかったら、ファイルに保存します。私が使っているループはうまくいかず、十分に効率的ではありません。私は基準に合った結果が欲しいだけです。どんな提案がありますか?

ベストアンサー1

あなたが最初にする必要があります特殊文字脱出両方のファイルに(存在する場合)それからそれを結合します。たとえば、 'pasteで使用できるパターンのリストが作成されます。ファイルが多すぎない限り、複数の引数を持つループは必要ありません。受け入れることができます:grep-fgrep

paste -d'.*' <(sed 's/[.[\*^$]/\\&/g' file1.txt) /dev/null \
<(sed 's/[.[\*^$]/\\&/g' file2.txt) | grep -f - /root/listoffiles/*php >> found.txt

おすすめ記事