Isso funciona, conforme indicado por jasonwryan :
awk 'BEGIN{print "START"}; {print}; END{print "END"}'
Eu tenho um monte de saída passando por sed e awk.
Como posso prefixar a saída com START e sufixo a resposta com END?
Por exemplo, se eu tiver
All this code
on all these lines
and all these
Como eu poderia conseguir:
START
All this code
on all these lines
and all these
END
?
Minha tentativa foi:
awk '{print "START";print;print "END"}'
mas eu tenho
...
START
All this code
END
START
on all these lines
END
START
and all these
END
Isso funciona, conforme indicado por jasonwryan :
awk 'BEGIN{print "START"}; {print}; END{print "END"}'
Isso pode ser feito em sed
com
sed -e $'1i\\nSTART' -e $'$a\\nEND'
1i
significa i nsert antes da linha 1; $a
significa a ppend após a última linha.
A sintaxe $'…'
é específica do bash.
Em outros shells, você deve conseguir fazer isso com:
sed -e '1i\Enter START' -e '$a\Enter END'Enter
Se você já estiver usando sed, poderá usar 1
para corresponder à primeira linha e $
para corresponder à última linha (consulte resposta de Scott ). Se você já estiver usando o awk, poderá usar um bloco BEGIN
para executar o código antes da primeira linha e um bloco END
para executar o código após a última linha (consulte Resposta de Michael Durrant ).
Se tudo o que você precisa fazer é adicionar um cabeçalho e um rodapé, use apenas echo
e cat
.
echo START
cat
echo END
Em um pipeline, para executar vários comandos, use { … }
para informar ao analisador que eles são um único comando composto.
content-generator |
{ echo START; cat; echo END; } |
postprocessor