次の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