J'ai un tas de sortie passant par sed et awk.
Comment puis-je préfixer la sortie avec START et suffixer la réponse avec END?
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
...
START
All this code
END
START
on all these lines
END
START
and all these
END
text-processing
sed
awk
regular-expression
Michael Durrant
la source
la source
Réponses:
Cela fonctionne, comme indiqué par jasonwryan :
la source
Cela peut être fait
sed
avec1i
signifie i nsert avant la ligne 1;$a
signifie un ppend après la dernière ligne. La$'…'
syntaxe est spécifique à bash. Dans d'autres coquilles, vous devriez pouvoir le faire avec:la source
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 la réponse de Scott ). Si vous utilisez déjà awk, vous pouvez utiliser unBEGIN
bloc pour exécuter le code avant la première ligne et unEND
bloc pour exécuter le code après la dernière ligne (voir la réponse de Michael Durrant ).Si tout ce que vous avez à faire est d'ajouter un en-tête et un pied de page, utilisez simplement
echo
etcat
.Dans un pipeline, pour exécuter plusieurs commandes, utilisez
{ … }
pour indiquer à l'analyseur qu'il s'agit d'une seule commande composée.la source