Grep マッチングとループディレクトリとは異なる出力ファイルに保存

Grep マッチングとループディレクトリとは異なる出力ファイルに保存

次の3つのファイルがあります。

1.out
a 
b
c

2.out
g
h
abcd
a 
h

3.out
b
c
e
a

上の行と下の行を一致させ、新しいファイルに保存するには、ファイルに「a」パターンが必要です。

for file in *.out;do grep -A 1 -B 1 'a' $file > $file_output.txt; done

答え1

_(下線)は変数名に有効な文字です.

これは$file_output.txt変数を使用し、その値にfile_output文字列を追加することを意味します。.txt変数が存在しない場合、名前は変数です.txt

変数名の前で終わることをシェルに通知するには、_名前の周りに中かっこを使用します。

"${file}_output.txt"

file 1.outまた、変数拡張は引用符で囲まれています(現在のディレクトリのファイル名にスペース()またはファイル名のワイルドカード(または同様の文字)が含まれている場合は[123].out必要です*.out)。

最終ループ:

for file in *.out; do
    grep -A 1 -B 1 'a' "$file" >"${file}_output.txt"
done

関連情報