SED Befehl zum Löschen einer Zeile

SED Befehl zum Löschen einer Zeile
SED ist ein integriertes Linux-Werkzeug für die Textmanipulation. Der Begriff SED steht für Stream Editor. Trotz des Namens ist SED nicht ein Texteditor für sich selbst. Vielmehr nimmt es Text als Eingabe an, führt verschiedene Textänderungen gemäß den Anweisungen durch und druckt die Ausgabe aus.

Diese Anleitung zeigt, wie SED verwendet wird, um eine Zeile aus einem Text zu löschen.

Sed unter Linux

Der vollständige Name von SED gibt uns einen Hinweis auf seine Arbeitsmethode. SED nimmt den Eingabtext als Strom. Der Text kann von überall kommen - eine Textdatei oder eine Standardausgabe (STDOut). Nach der Eingabe der Eingabe arbeitet SED nach der Linie auf der Linie.

Zur Demonstration finden Sie eine einfache Textdatei, die ich generiert habe.

$ Cat Dummy.txt
1. Die
2. schnell
3. braun
4. Fuchs
5. Sprünge
6. über
7. Die
8. faul
9. Hund

Löschen der Linie mit SED

Um eine Zeile zu löschen, verwenden wir den Befehl SED "D". Beachten Sie, dass Sie deklarieren müssen, welche Zeile gelöscht werden soll. Andernfalls löscht SED alle Linien.

Einzellinie löschen

Der folgende SED -Befehl löscht die erste Zeile des Textes.

sed '1d' Dummy.txt

Um eine Zeile zu löschen, benötigen Sie die Zeilennummer der Zielzeile. Lassen Sie uns Zeile 5 entfernen.

sed '5d' Dummy.txt

Verwenden Sie stattdessen „$“, um die letzte Zeile der Textdatei zu löschen, anstatt die Zeilennummer manuell zu berechnen.

sed '$ d' Dummy.txt

Löschen Sie eine Reihe von Linien

SED kann eine Reihe von Linien löschen. Hier beträgt der minimale Leitungswert 1 und der maximale Linienwert 5. Um die Reichweite zu deklarieren, verwenden wir Komma (,).

sed '1,5d' Dummy.txt

Mehrere Zeilen löschen

Was ist, wenn die Leitungen, die Sie entfernen möchten, nicht in einem festen Bereich befinden? Schauen Sie sich den folgenden SED -Befehl an. Beachten Sie, dass wir einen Semikolon (;) als Trennzeichen verwenden. Im Wesentlichen handelt es sich bei jeder abgrenzten Option um einen separaten SED -Befehl.

sed '1d; 2d; 3d; $ d' Dummy.txt

Löschen Sie alle Zeilen außer dem angegebenen Bereich

Im nächsten Beispiel hält SED nur die vom Bereich beschriebenen Linien beschrieben. Hier, "!Ist der Negationsoperator, der SED sagt, er solle die spezifischen Linien behalten.

sed '2,4!D 'Dummy.txt

Leere Zeilen löschen

Wenn im Text mehrere leere oder leere Zeilen vorhanden sind, wird der folgende SED -Befehl alle entfernen.

sed '/^$/d' Dummy.txt

Zeilen basierend auf dem Muster löschen

SED kann nach einem bestimmten Muster suchen und die angegebenen Aktionen in der Linie ausführen. Wir können diese Funktion verwenden, um bestimmte Zeilen zu löschen, die einem Muster entsprechen.

Schauen wir uns die folgende Demonstration an. SED entfernen jede Linie, die die Zeichenfolge „die“ enthält.

sed '/the/d' Dummy.txt

Wir können auch mehrere Zeichenfolgen beschreiben, nach denen suchen Sie nach. Jede Zeichenfolge wird mit dem Symbol "\ |" abgrenzt.

sed '/braun \ | der/d' Dummy.txt

Löschen Sie Zeilen, beginnend mit einem bestimmten Charakter

Um den Start einer Linie zu bezeichnen, verwenden wir das Symbol für das Pflege (^).

Der folgende SED -Befehl entfernen alle Linien, die mit einer Ziffer beginnen. Hier beschreibt die Charaktergruppe „[: Digit:]“ alle Ziffern (0-9).

sed '/^[[: Ziffer:]]/d' Dummy.txt

Wir können auch mehrere Zeichen für eine gültige Übereinstimmung beschreiben. Das folgende Beispiel entspricht allen Zeilen, die mit "T" und "B" beginnen.

sed '/^[tb]/d' Dummy.txt

Überprüfen Sie im nächsten Beispiel, wie Sie alle Linien entfernen, die mit einem Großbuchstaben beginnen. Hier verwenden wir die Großbuchstabengruppe „[: obere:]“.

sed '/^[: obere:]]/d' dummy.txt

Wenn die Zielleitungen am Start in Kleinbuchstaben enthalten sind, verwenden Sie die Kleinbuchstaben -Zeichengruppe „[: niedriger:]“.

sed '/^[: niedriger:]]/d' Dummy.txt

Zeilen löschen, die mit einem bestimmten Charakter enden

Um das Ende einer Linie zu bezeichnen, können wir das Symbol „$“ verwenden. Es beschreibt die Übereinstimmung mit dem letzten Auftreten des Musters.

Im nächsten Beispiel löscht SED Linien, die mit „e“ enden.

sed '/e $/d' Dummy.txt

Versuchen wir es uns mit einer Suche in mehreren Charakteren.

sed '/[en] $/d' Dummy.txt

Löschen von Zeilen, die dem Muster und der nächsten Zeile übereinstimmen

Wir haben bereits gezeigt, wie man eine Zeile löscht, wenn ein Muster übereinstimmt. Wir können die nachfolgende Linie auch weiter erweitern und löschen.

Schauen Sie sich den folgenden SED -Befehl an.

sed '/the/n; d;' Dummy.txt

SED stimmt mit der Linie überein, die „das“ enthält, und löschen auch die nachfolgende Linie.

Löschen der Linie vom Muster -Übereinstimmung bis zum Ende

Wir können das vorherige Beispiel weiter erweitern, um SED zu bestellen, um alle Linien ab dem ersten Spiel des Musters zu löschen.

sed '/fox/, $ d' Dummy.txt

Hier löscht SED die Linie, die dem Muster "The" zuerst und alle Linien anschließend entspricht.

Letzter Gedanke

SED ist ein einfaches Werkzeug. Dank der Unterstützung für den regulären Ausdruck kann es jedoch Wunder bewirken. SED integriert auch nahtlos in verschiedene Skripte.

Dies war nur ein kurzer Leitfaden, der eine der SED -Funktionen demonstrierte - Linien löschen. Es gibt unzählige andere Dinge, die Sie mit SED machen können. Schauen Sie sich beispielsweise diesen Mega -Leitfaden zu 50 SED -Beispielen an. Es ist ein fantastischer Leitfaden, der alle Grundlagen und viele fortgeschrittene SED -Implementierungen abdeckt.