Ich habe ein paar Ausgaben, die durch sed und awk laufen.
Wie kann ich der Ausgabe START voranstellen und der Antwort END hinzufügen?
Zum Beispiel, wenn ich habe
All this code
on all these lines
and all these
Wie könnte ich bekommen:
START
All this code
on all these lines
and all these
END
?
Mein Versuch war:
awk '{print "START";print;print "END"}'
aber ich habe
...
START
All this code
END
START
on all these lines
END
START
and all these
END
text-processing
sed
awk
regular-expression
Michael Durrant
quelle
quelle
Antworten:
Dies funktioniert, wie von Jason Wryan angegeben :
quelle
Dies kann
sed
mit durchgeführt werden1i
Mittel i nsert vor Zeile 1;$a
bedeutet eine Pause nach der letzten Zeile. Die$'…'
Syntax ist bash-spezifisch. In anderen Shells sollte dies möglich sein mit:quelle
Wenn Sie sed bereits verwenden, können Sie
1
mit der ersten und$
der letzten Zeile übereinstimmen (siehe Scotts Antwort ). Wenn Sie awk bereits verwenden, können Sie einenBEGIN
Block zum Ausführen von Code vor der ersten Zeile und einenEND
Block zum Ausführen von Code nach der letzten Zeile verwenden (siehe Antwort von Michael Durrant ).Wenn Sie lediglich eine Kopf- und eine Fußzeile hinzufügen müssen, verwenden Sie einfach
echo
undcat
.Wenn Sie in einer Pipeline mehrere Befehle ausführen möchten,
{ … }
teilen Sie dem Parser mit, dass es sich um einen einzigen zusammengesetzten Befehl handelt.quelle