GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie fügt man Text vor der ersten Zeile einer Datei ein?

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.


Linux
  1. Fortgeschrittene Verwendung des Less-Text-Dateibetrachters in Linux

  2. Bearbeiten von Text auf der Kommandozeile mit sed

  3. So fügen Sie Text am Anfang jeder Zeile in Vim ein

  4. Wie kann man die Zeilen einer Datei durchlaufen?

  5. Wie teilt man eine Datei und behält die erste Zeile in jedem der Teile bei?

Lernen Sie, den Sed-Texteditor zu verwenden

So fügen Sie Text am Anfang einer Datei in Linux hinzu

Wie verschiebt man eine Zeile in einer Textdatei um eine Zeile nach oben oder unten?

Wie lösche ich die ersten N Zeilen einer ASCII-Datei mit Shell-Befehlen?

Wie analysiert man jede Zeile einer Textdatei als Argument für einen Befehl?

Wie kehrt der Befehl Sed ‘1!g;h;$!d’ den Inhalt einer Datei um?