Sedとawkを通過する出力がたくさんあります。
出力の前にSTARTを、回答の後にENDを後ろに付けるにはどうすればよいですか?
たとえば、
All this code
on all these lines
and all these
どうすれば入手できますか:
START
All this code
on all these lines
and all these
END
?
私の試みは:
awk '{print "START";print;print "END"}'
しかし私は得た
...
START
All this code
END
START
on all these lines
END
START
and all these
END
jasonwryan で示されるように、これは機能します。
awk 'BEGIN{print "START"}; {print}; END{print "END"}'
これはsed
で行うことができます
sed -e $'1i\\\nSTART' -e $'$a\\\nEND'
1i
は、1行目の前にi nsertを意味します。 $a
は、最終行の後にa ppendを意味します。 $'…'
構文はbash固有です。他のシェルでは、次のようにしてこれを行うことができるはずです:
sed -e '1i \Enter 開始 '-e' $ a \Enter 終わり'Enter
すでにsedを使用している場合は、1
を使用して最初の行を照合し、$
を使用して最後の行を照合できます( Scottの回答 を参照)。すでにawkを使用している場合は、BEGIN
ブロックを使用して最初の行の前にコードを実行し、END
ブロックを使用して最後の行の後にコードを実行することができます( Michael Durrant's答え )。
ヘッダーとフッターを追加するだけの場合は、echo
とcat
を使用します。
echo START
cat
echo END
パイプラインで複数のコマンドを実行するには、{ … }
を使用して、それらが単一の複合コマンドであることをパーサーに伝えます。
content-generator |
{ echo START; cat; echo END; } |
postprocessor