複数行の接頭辞を付けて改行を維持します。

複数行の接頭辞を付けて改行を維持します。

catとgrepの出力に変数が設定されたbashスクリプトがあります。

result=`cat $file | grep -A2 "$search"`

結果には3つのEG行が含まれます。

This is Line 1
This is line 2
This is line 3

各行の前にスペースを入れる必要があります。

 This is Line 1
 This is line 2
 This is line 3

私は以下を試しました:

result=`echo $result | awk '{print " "$0}'`

そして、いくつかの他のsedコマンドの結果は次のとおりです。

 This is Line 1 This is line 2 This is line 3

スペースを追加しますが、新しい行を削除します。

注:これは改行文字が必要なファイルに保存されます。

答え1

アッ

awk '{printf " %s\n",$0}' file-in.txt > file-out.txt

sed

sed -e 's/^/ /' file-in.txt > file-out.txt

sed (同じファイル)

sed -i -s 's/^/ /' file.txt

答え2

awk停止を使用する代わりに、最初の起動時に追加のgrep処理を実行します(シミュレーション$resultです)。grep-A Num

result=$(awk -v patt="$search" '$0 ~ patt{S=1}
         S && ($0 ~ patt || ++n<3) {print " "$0} n==3{n=0}' infile)

$resultその後、出力ファイルとして印刷/保存します。

printf '%s\n' "$result" > outfile

関連情報