単一のgrepから複数のファイルを出力しますか?

単一のgrepから複数のファイルを出力しますか?

私はシェルスクリプトの経験はあまりありませんが、パターンをgrepする方法と一致する各ファイルに対して、grep一致行を含むファイルをディスクに書き込む方法を理解しようとしています。たとえば、

$ grep -E "MY PATTERN" myfile{1,3}

次に、一致する行を含む新しいファイルを作成します。

matches-myfile1
matches-myfile2
matches-myfile3

可能ですか?どうすればいいですか?私が探している答えはbashまたはzshです。

ベストアンサー1

Bonsiには正しいアイデアがありますが、正しいアプローチではありません(たとえば、スペースやその他のスペース文字を含むファイル名を処理する方法など)。これを行う1つの方法は次のとおりですbash

for file in myfile{1,3}; do
    grep -E "MY PATTERN" < "$file" > "matches-$file"
done

もしあなたならしたファイルを保存するには、次のように単語の分割を正しく考慮する必要があります。

files=( myfile{1,3} )
for file in "${files[@]}"; do
    grep -E "MY PATTERN" < "$file" > "matches-$file"
done

おすすめ記事