In diesem Artikel sehen wir die verschiedenen Möglichkeiten, einen Header-Datensatz oder einen Trailer-Datensatz zu einer Datei hinzuzufügen.
Betrachten wir eine Datei, file1.
$ cat file1 apple orange grapes banana
Hinzufügen einer Zeile am Anfang der Datei (Header)
1. So fügen Sie einen Header-Datensatz mit sed hinzu:
$ sed '1i some text at the beginning' file1 some text at the beginning apple orange grapes banana
Das '1i' in sed enthält (i) die Zeile etwas Text am Anfang nur vor der ersten Zeile (1) der Datei. Der obige Befehl zeigt den Dateiinhalt zusammen mit dem Header an, ohne die Datei zu aktualisieren. Um die Originaldatei selbst zu aktualisieren, verwenden Sie die Option -i von sed wie unten gezeigt:
$ sed -i.bkp '1i some text at the beginning' file1
Die Option -i.bkp erstellt eine Sicherungsdatei mit dem Namen file1.bkp, bevor Änderungen an der Originaldatei vorgenommen werden. Die Erweiterung .bkp kann beliebig sein.
2. Sie können auch dieses Beispiel von sed verwenden, um eine Kopfzeile einzufügen:
$ sed '1s/^/some text at the beginning\n/' file1
Die „1“ gibt die Zeilennummer an, die nur abgeglichen wird, wenn die Substitution mit dem Befehl „s“ durchgeführt wird. Das Symbol „^“ zeigt den Beginn der Zeile an. Beachten Sie auch den am Ende hinzugefügten Wagenrücklauf ‚\n‘, der hilft, nach dem Ersetzen eine neue Zeile zu drucken.
3. Sie können auch den cat-Befehl mit der bash-printf-Anweisung verwenden, um eine Zeile am Anfang der Datei hinzuzufügen.
$ printf '%b' 'some text at the beginning\n' | cat - file1
4. So fügen Sie mit awk einen Header-Datensatz zu einer Datei hinzu:
$ awk 'BEGIN{print "some text at the beginning"}1' file1 some text at the beginning apple orange grapes banana
Der BEGINN Die Anweisung in awk macht die Anweisung am Anfang zu etwas Text, der gedruckt wird, bevor die Datei verarbeitet wird, und daher erscheint der Header in der Ausgabe. Die 1 soll angeben, dass jede Zeile der Datei gedruckt werden soll.
Hinzufügen einer Zeile am Ende der Datei (Trailer)
1. Der einfachste aller Befehle hier ist die einfache Verwendung der Umleitung, um eine Zeile am Ende der Datei anzuhängen. Zum Beispiel:
$ echo "some text at the end" >> file1
2. So fügen Sie mit sed einen Trailer-Datensatz zu einer Datei hinzu:
$ sed '$a some text at the end' file1 apple orange grapes banana some text at the end
Das $a bewirkt, dass sed die Anweisung nur nach der letzten Zeile ($) der Datei am Ende mit etwas Text anhängt (a).
3. So fügen Sie mit awk einen Trailer-Datensatz zu einer Datei hinzu:
$ awk '1;END{print "some text at the end"}' file apple orange grapes banana some text at the end
Das ENDE label bewirkt, dass die Druckanweisung erst gedruckt wird, nachdem die Datei verarbeitet wurde. Die 1 soll jede Zeile drucken. 1 bedeutet tatsächlich wahr.
sed auf MAC OSX
sed verhält sich unter MAC OS kaum anders als GNU sed. Sie können das folgende Beispiel ausprobieren, um der Datei in MAC eine Kopfzeile hinzuzufügen.
$ sed -i '.bak' '1s/^/some text at the beginning\'$'\n/g' file1