Wenn die Datei nur aus einer Zeile besteht, können Sie Folgendes verwenden:
sed 's/^/insert this /' oldfile > newfile
Wenn es mehr als eine Zeile ist. einer von:
sed '1s/^/insert this /' oldfile > newfile
sed '1,1s/^/insert this /' oldfile > newfile
Ich habe letzteres eingefügt, damit Sie wissen, wie man Linienbereiche erstellt. Beide "ersetzen" die Startzeilenmarkierung in ihren betroffenen Zeilen durch den Text, den Sie einfügen möchten. Sie können auch (vorausgesetzt Ihr sed
ist modern genug) use:
sed -i 'whatever command you choose' filename
um eine direkte Bearbeitung durchzuführen.
Wenn Sie am Anfang einer Datei eine Zeile hinzufügen möchten, müssen Sie \n
hinzufügen am Ende der Zeichenfolge in der besten Lösung oben.
Die beste Lösung fügt die Zeichenfolge hinzu, aber mit der Zeichenfolge wird keine Zeile am Ende einer Datei hinzugefügt.
sed -i '1s/^/your text\n/' file
Unterschale verwenden:
echo "$(echo -n 'hello'; cat filename)" > filename
Leider werden durch die Befehlsersetzung Zeilenumbrüche am Ende der Datei entfernt. Um sie zu behalten, kann man verwenden:
echo -n "hello" | cat - filename > /tmp/filename.tmp
mv /tmp/filename.tmp filename
Weder Gruppierung noch Befehlsersetzung sind erforderlich.
sed
kann auf einer Adresse operieren:
$ sed -i '1s/^/<added text> /' file
Was ist dieses magische 1s
Siehst du auf jeder Antwort hier? Zeilenadressierung!.
<added text>
hinzufügen möchten in den ersten 10 Zeilen?
$ sed -i '1,10s/^/<added text> /' file
Oder Sie können Command Grouping
verwenden :
$ { echo -n '<added text> '; cat file; } >file.new
$ mv file{.new,}