Streaming-Editor (sed ) ist ein wichtiges Werkzeug, wenn Sie mit dem Analysieren und Transformieren von Text in Ihren Nix-basierten Systemen arbeiten. Es wird zum Suchen, Filtern, Ersetzen von Text und Textmanipulationen wie Einfügen, Löschen, Ersetzen und Suchen in Textdateien verwendet.
[ Das könnte Ihnen auch gefallen:So verwenden Sie Sed zum Suchen und Ersetzen von Zeichenfolgen in Dateien ]
In den meisten Linux-Distributionen ist der Befehl sed vorinstalliert und Sie können ihn mit den folgenden Befehlen überprüfen, die den binären Speicherort des Befehls und die Version anzeigen.
$ which sed $ sed --version
Hier in diesem Artikel zeige ich Ihnen anhand einer Beispieldatei, die 7 Zeilen enthält, wie Sie mit dem Befehl sed Zeilen aus einer Datei entfernen. Ich werde diese Datei zu Demonstrationszwecken verwenden.
$ cat testfile.txt First line second line Third line Fourth line Fifth line Sixth line SIXTH LINE
So löschen Sie eine Zeile aus einer Datei
Um die Zeile aus einer Datei zu löschen, können Sie den folgenden Befehl verwenden. Sie müssen 'N'
ersetzen mit der Zeilennummer und 'd'
ist die Zeile zu löschen.
$ sed 'Nd' testfile.txt
Wenn Sie die vierte Zeile aus der Datei löschen müssen, müssen Sie N=4
ersetzen .
$ sed '4d' testfile.txt
So löschen Sie die erste und letzte Zeile aus einer Datei
Sie können die erste Zeile aus einer Datei löschen, indem Sie die gleiche Syntax wie im vorherigen Beispiel verwenden. Sie müssen N=1
setzen wodurch die erste Zeile entfernt wird.
$ sed '1d' testfile.txt
Um die letzte Zeile aus einer Datei zu löschen, verwenden Sie den folgenden Befehl mit ($)
Zeichen, das die letzte Zeile einer Datei bezeichnet.
$ sed '$d' testfile.txt
So löschen Sie einen Zeilenbereich aus einer Datei
Sie können eine Reihe von Zeilen aus einer Datei löschen. Nehmen wir an, Sie möchten die Zeilen 3 bis 5 löschen, Sie können die folgende Syntax verwenden.
M
– StartzeilennummerN
– Endzeilennummer
$ sed 'M,Nd' testfile.txt
Um tatsächlich zu löschen, verwenden Sie dazu den folgenden Befehl.
$ sed '3,5d' testfile.txt
Sie können !
verwenden Symbol, um den Löschvorgang zu negieren. Dadurch werden alle Zeilen außer dem angegebenen Bereich (3-5) gelöscht.
$ sed '3,5!d' testfile.txt
So entfernen Sie Leerzeilen aus einer Datei
Führen Sie den folgenden Befehl aus, um alle leeren Zeilen aus einer Datei zu löschen. Ein wichtiger Punkt, der zu beachten ist, ist die Verwendung dieses Befehls, leere Zeilen mit Leerzeichen werden nicht gelöscht. Ich habe meiner Testdatei Leerzeilen und Leerzeilen mit Leerzeichen hinzugefügt.
$ cat testfile.txt First line second line Third line Fourth line Fifth line Sixth line SIXTH LINE
$ sed '/^$/d' testfile.txt
Aus dem obigen Bild können Sie sehen, dass leere Zeilen gelöscht werden, aber Zeilen mit Leerzeichen werden nicht gelöscht. Um alle Zeilen einschließlich Leerzeichen zu löschen, können Sie den folgenden Befehl ausführen.
$ sed '/^[[:space:]]*$/d' testfile.txt
[Das könnte Ihnen auch gefallen:So löschen Sie leere Zeilen in Dateien mit Grep, Sed und Awk ]
So löschen Sie Zeilen, die mit Wörtern in einer Datei beginnen
Um eine Zeile zu löschen, die mit einem bestimmten Wort beginnt, führen Sie den folgenden Befehl mit ^
aus Das Symbol stellt den Anfang des Wortes dar, gefolgt vom eigentlichen Wort.
$ sed '/^First/d' testfile.txt
Führen Sie den folgenden Befehl aus, um eine Zeile zu löschen, die mit einem bestimmten Wort endet. Das zu löschende Wort gefolgt von $
Symbol löscht Zeilen.
$ sed '/LINE$/d' testfile.txt
So nehmen Sie Änderungen direkt in einer Datei vor
Um die Änderungen direkt in der Datei mit sed vorzunehmen Sie müssen -i
übergeben Flag, das die Änderungen direkt in der Datei vornimmt.
$ sed -i '/^[[:space:]]*$/d' testfile.txt
Wir sind am Ende des Artikels angelangt. Der sed Der Befehl spielt eine wichtige Rolle, wenn Sie an der Bearbeitung von Dateien arbeiten. In Kombination mit anderen Linux-Dienstprogrammen wie awk , grep Sie können mit sed noch mehr Dinge tun .