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