grepを使用してファイルのリストを取得する簡単なスクリプトを作成したいと思います。現在のコードは次のようになります。
a= file1.txt
b= file2.txt
for
do
grep '$a.*$b' /root/listoffiles/*php >> found.txt
完璧
file1
どちらfile2
も単語のリストです。したがって、複数の基準を使用して目的地を検索します。たとえば、$a
「hello」と「world」になり、$b
2行目が「red」と「tshirt」になります。 2つの条件が一致するものが見つかったら、ファイルに保存します。私が使っているループはうまくいかず、十分に効率的ではありません。私は基準に合った結果が欲しいだけです。どんな提案がありますか?
ベストアンサー1
あなたが最初にする必要があります特殊文字脱出両方のファイルに(存在する場合)それからそれを結合します。たとえば、 'paste
で使用できるパターンのリストが作成されます。ファイルが多すぎない限り、複数の引数を持つループは必要ありません。受け入れることができます:grep
-f
grep
paste -d'.*' <(sed 's/[.[\*^$]/\\&/g' file1.txt) /dev/null \
<(sed 's/[.[\*^$]/\\&/g' file2.txt) | grep -f - /root/listoffiles/*php >> found.txt