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.