J'ai un tas de sortie passant par SED et Awk.
Comment puis-je préfixer la sortie avec Démarrer et suffixer la réponse avec la fin?
Par exemple, si j'ai
All this code
on all these lines
and all these
Comment pourrais-je obtenir:
START
All this code
on all these lines
and all these
END
?
Ma tentative était:
awk '{print "START";print;print "END"}'
mais j'ai eu
...
START
All this code
END
START
on all these lines
END
START
and all these
END
Cela fonctionne, comme indiqué par Jasonwryan :
awk 'BEGIN{print "START"}; {print}; END{print "END"}'
Cela peut être fait en sed
avec
sed -e $'1i\\\nSTART' -e $'$a\\\nEND'
1i
signifie i nsert avant la ligne 1; $a
signifie a PPEND après la dernière ligne. Les $'…'
Syntaxe est spécifique à Bash. Dans d'autres coquilles, vous devriez être capable de le faire avec:
sed -e '1i \Enter Démarrer '-e' $ a \Enter FINIR'Enter
Si vous utilisez déjà SED, vous pouvez utiliser 1
Pour faire correspondre la première ligne et $
Pour faire correspondre la dernière ligne (voir Réponse de Scott ). Si vous utilisez déjà AWK, vous pouvez utiliser un bloc BEGIN
Block pour exécuter le code avant la première ligne et un bloc END
Block pour exécuter le code après la dernière ligne (voir Michael Durrant's réponse ).
Si tout ce que vous avez à faire est d'ajouter une en-tête et un pied de page, il suffit d'utiliser echo
et cat
.
echo START
cat
echo END
Dans un pipeline, utiliser plusieurs commandes, utilisez { … }
Pour dire à l'analyseur qu'ils sont une seule commande composée.
content-generator |
{ echo START; cat; echo END; } |
postprocessor