Wie füge ich mit `sed` eine Zeile nach dem Match ein?

How Insert Line After Match Using Sed



Einer der nützlichen und leistungsstarken Befehle von Linux ist der Befehl sed. Dieser Befehl wird verwendet, um verschiedene Arten von Aufgaben in Linux auszuführen, wie z. B. das Einfügen, Aktualisieren und Löschen eines bestimmten Textes oder einer bestimmten Zeile basierend auf der Übereinstimmung. Mit dem Befehl sed können Sie auf verschiedene Weise einen Text in einen String oder eine Datei einfügen.

In diesem Tutorial wird gezeigt, wie Sie eine Zeile einfügen, nachdem Sie eine Übereinstimmung in einem String oder einer Zeile gefunden haben.







Fügen Sie eine Zeile in die Zeichenfolge ein

Mit dem Befehl sed kann nach jedem Zeichenfolgenwert eine neue Zeile eingefügt werden, wenn das im Befehl definierte Muster mit einem beliebigen Teil des Zeichenfolgenwerts übereinstimmt.



Das folgende Beispiel zeigt, wie nach einem Zeichenfolgenwert eine neue Zeile hinzugefügt werden kann, wenn eine bestimmte Zeichenfolge an einer beliebigen Stelle im Zeichenfolgenwert vorhanden ist.



Beispiel-1: Fügen Sie eine Zeile in eine Zeichenfolge ein, nachdem Sie eine Übereinstimmung gefunden haben

Der folgende Befehl sucht nach inng in der Zeichenfolge, I like Programming, und einer Textzeile, Do you like Programming? wird nach dem String eingefügt, wenn der Suchstring existiert.





Hier wird das &-Zeichen verwendet, um die Zeile nach dem String einzufügen.

$rauswerfen 'Ich programmiere gerne.' | sed 's / inng / & Programmierst du gerne? / '

Die folgende Ausgabe zeigt, dass inng in der Zeichenfolge nicht vorhanden ist und nach der Zeichenfolge keine Zeile eingefügt wird.




Der folgende Befehl sucht nach ing. im String, ich programmiere gerne und es existiert im String.

$rauswerfen 'Ich programmiere gerne.' | sed 's/ing./& Programmierst du gerne?/'

Die folgende Ausgabe zeigt, dass die neue Zeile nach der Zeichenfolge hinzugefügt wird.

Eine Zeile in eine Datei einfügen

Es gibt zwei Möglichkeiten, eine Zeile einzufügen, nachdem eine Übereinstimmung in einer unten genannten Datei gefunden wurde. Wenn der Befehl sed ohne die Option -i verwendet wird, bleibt der Inhalt der Datei unverändert und die Ausgabe zeigt den Dateiinhalt mit dem eingefügten Zeilenumbruch. Sie müssen die Option -i mit dem Befehl sed verwenden, um die neue Zeile dauerhaft in die Datei einzufügen, wenn das übereinstimmende Muster in der Datei vorhanden ist.

A. Verwenden von a im Befehl sed

Das a kann im Suchmuster des sed verwendet werden, um eine oder mehrere Zeilen in einer Datei nach der Zeile anzuhängen, in der das Suchmuster übereinstimmt, oder nach einer bestimmten Zeilennummer.

B. Verwenden von i im sed-Befehl

Das i kann im Suchmuster des sed-Befehls verwendet werden, um eine oder mehrere Zeilen in eine Datei vor der Zeile einzufügen, in der das Suchmuster übereinstimmt.

Zeile(n) in eine Datei basierend auf dem Muster einfügen:

Erstellen Sie eine tabulatorgetrennte Textdatei namens produkte.txt mit dem folgenden Inhalt, um die Verwendung des obigen Flags im sed-Befehl anzuzeigen.

produkte.txt

ID-Name

01 Schlagsahne

02 Kakaopulver

03 Zucker

04 Ei

05 Mehl

Beispiel-2: Fügen Sie eine Zeile nach einer bestimmten Zeilennummer mit dem a . ein

Die folgenden Befehle zeigen, wie eine neue Zeile nach einer bestimmten Zeilennummer der Datei products.txt basierend auf dem im Befehl sed verwendeten Muster hinzugefügt werden kann.

Hier zeigt der erste Befehl den vorhandenen Inhalt der Datei an. Der Befehl sed hängt den Text b01 Backpulver nach den ersten beiden Zeilen der Datei an. Der letzte Befehl wird verwendet, um zu überprüfen, ob der Dateiinhalt geändert wurde oder nicht.

$Katzeprodukte.txt

$sed '2 a b01 Backpulver'produkte.txt

$Katzeprodukte.txt

Die folgende Ausgabe wird angezeigt, nachdem der obige Befehl ausgeführt wurde.

Beispiel-3: Fügen Sie eine Zeile nach der letzten Zeile mit dem a . ein

Der folgende Befehl zeigt, wie Sie nach der letzten Zeile der Datei eine neue Zeile anhängen. Der erste und letzte Befehl zeigt den vorhandenen Inhalt der Datei vor und nach der Ausführung des sed-Befehls. Das $-Symbol wird im Muster des sed-Befehls verwendet, um die letzte Zeile der Datei zu erwähnen.

$Katzeprodukte.txt

$sed '$ a b01 Backpulver'produkte.txt

$Katzeprodukte.txt

Die folgende Ausgabe wird angezeigt, nachdem der obige Befehl ausgeführt wurde.

Beispiel-4: Fügen Sie eine Zeile an einer beliebigen Stelle in der Datei ein, nachdem Sie ein Muster mit dem a . gefunden haben

Der folgende sed-Befehl zeigt, wie eine neue Zeile an einer beliebigen Stelle in der Datei basierend auf dem übereinstimmenden Muster hinzugefügt werden kann. Das im sed-Befehl verwendete Muster durchsucht jede Zeile, die mit s01 beginnt, und fügt die neue Zeichenfolge danach hinzu. Die vierte Zeile der Datei beginnt mit s01 und die neue Zeile wird nach dieser Zeile eingefügt.

$Katzeprodukte.txt

$sed '/^s01.*/a b01 Backpulver'produkte.txt

$Katzeprodukte.txt

Die folgende Ausgabe wird angezeigt, nachdem der Befehl ausgeführt wurde.


Der folgende sed-Befehl durchsucht jede Zeile, die mit Powder endet, und fügt die neue Zeile dahinter ein. Die dritte Zeile der Datei endet mit Powder. Die neue Zeile wird also nach dieser Zeile eingefügt.

$Katzeprodukte.txt

$sed '/Pulver$/a b01 Backpulver'produkte.txt

$Katzeprodukte.txt

Die folgende Ausgabe wird angezeigt, nachdem die obigen Befehle ausgeführt wurden.

Beispiel-5: Fügen Sie mehrere Zeilen nach dem übereinstimmenden Muster mit a . ein

Der folgende sed-Befehl zeigt, wie Sie dem Inhalt einer Datei basierend auf dem übereinstimmenden Muster mehrere Zeilen hinzufügen.

Hier werden nach der dritten Zeile entsprechend dem Muster zwei Zeilen hinzugefügt.

$Katzeprodukte.txt

$sed '/^[a-c]/a b01 Backpulver b02 Backpulver'produkte.txt

$Katzeprodukte.txt

Die folgende Ausgabe wird angezeigt, nachdem die obigen Befehle ausgeführt wurden.

Beispiel-6: Fügen Sie eine Linie ein, nachdem Sie ein Muster mit dem I . gefunden haben

$Katzeprodukte.txt

$sed '/creme/i b01 Backpulver'produkte.txt

$Katzeprodukte.txt

Die folgende Ausgabe wird angezeigt, nachdem die obigen Befehle ausgeführt wurden.

Beispiel-7: Fügen Sie mit der Option -i eine Zeile dauerhaft nach dem übereinstimmenden Muster ein

Der folgende sed-Befehl zeigt, wie Sie den Inhalt der Datei dauerhaft ändern. Die Option i wird mit dem Befehl sed verwendet, um basierend auf dem Muster eine neue Zeile in die Datei einzufügen.

$Katzeprodukte.txt

$sed -ich '/e$/a g01 Ghee'produkte.txt

$Katzeprodukte.txt

Die folgende Ausgabe wird angezeigt, nachdem die obigen Befehle ausgeführt wurden.

Abschluss:

Die Möglichkeiten zum Einfügen von zwei oder mehr Zeilen in eine Datei mithilfe des Befehls sed mit Muster wurden in diesem Tutorial gezeigt, um dem Leser zu helfen, diesen Befehl anzuwenden, um Zeilen temporär oder dauerhaft basierend auf dem Muster einzufügen.