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