Ich habe mich in sed umgesehen Befehl zum Hinzufügen von Text in einer Datei in einer bestimmten Zeile.
Dies funktioniert, indem Text nach Zeile 1 hinzugefügt wird:
sed '1 a
Aber ich möchte es vorher hinzufügen Zeile 1. Es wäre:
sed '0 a
aber ich bekomme diesen Fehler:invalid usage of line address 0 .
Irgendwelche Vorschläge?
Akzeptierte Antwort:
Verwenden Sie sed Einfügen (i ) Option, die den Text in die vorherige Zeile einfügt.
sed '1 i
Update des Frageautors:
Bearbeiten Sie dazu die Datei an Ort und Stelle – mit GNU sed – Ich musste das -i hinzufügen Möglichkeit:
sed -i '1 ianything' file
Auch Syntax
sed -i '1i text' filename
Für Nicht-GNU-sed
Sie müssen die Return-Taste direkt nach dem Backslash 1i drücken und nach first_line_text :
sed -i '1i
first_line_text
'
Beachten Sie auch, dass einige Nicht-GNU sed Implementierungen (zum Beispiel die auf macOS) erfordern ein Argument für das -i Flag (verwenden Sie -i '' um denselben Effekt wie mit GNU sed zu erzielen ).
Für sed Implementierungen, die -i nicht unterstützen überhaupt ohne diese Option ausführen, aber die Ausgabe in eine neue Datei umleiten. Ersetzen Sie dann die alte Datei durch die neu erstellte Datei.