Vorwort Wenn wir bestimmte Zeilen in einer Datei löschen möchten, öffnen wir normalerweise zuerst die Datei, suchen dann den zu löschenden Inhalt, wählen dann diese Zeilen aus und drücken die Entf-Taste, um sie zu löschen. Dies ist kein Problem, wenn die Datenmenge gering ist. Wenn die Datei jedoch viele Datenzeilen enthält und die Daten kompliziert sind, wäre es schlimm, wenn Sie trotzdem noch die obige Methode verwenden würden. Zu diesem Zweck zeigt Ihnen der heutige Artikel, wie Sie mit dem Befehlszeilentool sed bestimmte Inhaltszeilen in einer Datei effizient und elegant löschen, selbst wenn die Daten groß und komplex sind. sed ist die Abkürzung für Stream Editor. Es wird für die grundlegende Textkonvertierung in Linux verwendet. Es ist ein wichtiger Befehl für Dateioperationen. Daher können wir ihn auch zum Löschen von Text verwenden. Nachfolgend finden Sie einige Beispiele für die Verwendung des sed-Befehls, die die meisten Anwendungsszenarien abdecken. Sie helfen Ihnen dabei, den sed-Befehl vom einfachsten bis zum komplexesten zu erlernen, sodass Sie bestimmte Zeilen einer Datei einfach und effizient löschen können. Zuerst bereiten wir eine Demonstrationsdatei sed-demo.txt vor. # Katze sed-demo.txt 1 Linux-Betriebssystem 2 Unix-Betriebssystem 3 RHEL 4 Roter Hut 5 Fedora 6 Arch Linux 7 CentOS 8 Debian 9. Ubuntu 10 openSUSE Dann können wir mit dem sed-Befehl experimentieren. Hinweis: -i bedeutet, Dateioperationen direkt auszuführen, ohne die Ergebnisse auf dem Terminal anzuzeigen. Da es sich hier um eine Demonstration handelt, wird die Option -i hier nicht verwendet. Verwenden Sie in der Praxis bitte die Option -i. 1. Löschen einer Zeile Zuerst löschen wir eine Zeile, beispielsweise die erste oder die letzte Zeile, die eigentlich die N-te Zeile ist. Das Befehlsformat zum Löschen von Zeile N ist: sed 'Nd'-Datei Versuchen wir, die erste Zeile zu löschen: # sed '1d' sed-demo.txt Nach dem Löschen: 2 Unix-Betriebssystem 3 RHEL 4 Roter Hut 5 Fedora 6 Arch Linux 7 CentOS 8 Debian 9. Ubuntu 10 openSUSE Einfach, oder? Ich werde es hier nicht im Detail erklären. Ersetzen Sie einfach 1 im Befehl durch die Zeile, die Sie löschen möchten. Nun stellt sich die Frage, welche Zahl wird zur Darstellung der letzten Zeile verwendet? Hier noch ein Tipp für alle. Das Dollarzeichen $ kann man als Zeichen für das Ende verwenden, der Befehl zum Löschen der letzten Zeile kann also folgendermaßen geschrieben werden: # sed '$d' sed-demo.txt Nach dem Löschen: 1 Linux-Betriebssystem 2 Unix-Betriebssystem 3 RHEL 4 Roter Hut 5 Fedora 6 Arch Linux 7 CentOS 8 Debian 9. Ubuntu 2. Löschen Sie einige Zeilen Der Befehl sed kann aufeinanderfolgende oder nicht aufeinanderfolgende Zeilen löschen. Löschen Sie aufeinanderfolgende Zeilen, zum Beispiel die Zeilen 5 bis 7: # sed '5,7d' sed-demo.txt Nach dem Löschen: 1 Linux-Betriebssystem 2 Unix-Betriebssystem 3 RHEL 4 Roter Hut 8 Debian 9. Ubuntu 10 openSUSE Löschen Sie nicht aufeinanderfolgende Zeilen, beispielsweise die 1., 5., 9. und letzte Zeile: # sed '1d;5d;9d;$d' sed-demo.txt Nach dem Löschen: 2 Unix-Betriebssystem 3 RHEL 4 Roter Hut 6 Arch Linux 7 CentOS 8 Debian Darüber hinaus kann es auch mit logischem NICHT! verwendet werden, um beispielsweise alle Zeilen außer den Zeilen 3 bis 6 zu löschen: # sed '3,6!d' sed-demo.txt Nach dem Löschen: 3 RHEL 4 Roter Hut 5 Fedora 6 Arch Linux 3. Leere Zeilen löschen sed unterstützt auch das Löschen leerer Zeilen in Dateien. Der Befehl lautet wie folgt: # sed '/^$/d' sed-demo.txt Nach dem Löschen: 1 Linux-Betriebssystem 2 Unix-Betriebssystem 3 RHEL 4 Roter Hut 5 Fedora 6 Arch Linux 7 CentOS 8 Debian 9. Ubuntu 10 openSUSE Tipp: Der Ausdruck zwischen den beiden Schrägstrichen // dient hier der Textübereinstimmung. Sie können sich auf die Verwendung regulärer Ausdrücke beziehen. Nachfolgend finden Sie einige häufig verwendete Methoden zur Vertiefung Ihres Lernerfolgs. 4. Löschen Sie Zeilen, die bestimmte Zeichen enthalten Angenommen, wir möchten die Zeilen in der Beispieldatei löschen, die das Wort „System“ enthalten. Wir können /System/ verwenden, was bedeutet, dass die Zeichenfolge „System“ immer dann abgeglichen wird, wenn sie vorkommt. Der spezifische Befehl lautet wie folgt: # sed '/System/d' sed-demo.txt Nach dem Löschen: 3 RHEL 4 Roter Hut 5 Fedora 6 Arch Linux 7 CentOS 8 Debian 9. Ubuntu 10 openSUSE Darüber hinaus können wir auch logische Bedingungen hinzufügen, wie zum Beispiel den folgenden Befehl: # sed '/System\|Linux/d' sed-demo.txt Nach dem Löschen: 3 RHEL 4 Roter Hut 5 Fedora 7 CentOS 8 Debian 9. Ubuntu 10 openSUSE Das Symbol \| steht für ein logisches ODER. Der obige Befehl bedeutet, dass alle Zeilen, die im Text „System“ oder „Linux“ enthalten, gelöscht werden sollen. 5. Löschen Sie Zeilen, die mit bestimmten Zeichen beginnen Zunächst erstellen wir zur besseren Demonstration eine weitere Beispieldatei sed-demo-1.txt, deren Inhalt wie folgt ist: # Katze sed-demo-1.txt Nach dem Löschen: Linux-Betriebssystem Unix-Betriebssystem RHEL Red Hat Fedora Debian Ubuntu Arch Linux - 1 2 – Manjaro 3 4 5 6 Wie oben erwähnt, kann das $-Zeichen als Ende verstanden werden. Gibt es also irgendein Zeichen, das den Anfang darstellen kann? Die Antwort ist ja. Hier können wir das Zeichen ^ verwenden, um den Anfang darzustellen. Wenn wir dann die Zeilen löschen möchten, die mit einem bestimmten Zeichen beginnen, beispielsweise die Zeilen, die mit R beginnen, können wir den folgenden Befehl verwenden: # sed '/^R/d' sed-demo-1.txt Nach dem Löschen: Linux-Betriebssystem Unix-Betriebssystem Fedora Debian Ubuntu Arch Linux - 1 2 – Manjaro 3 4 5 6 Die Frage ist also, wenn ich beispielsweise die Zeile löschen möchte, die mit R oder F beginnt, muss ich den Befehl dann zweimal ausführen? Wenn es mehr sind, müssen Sie dann nicht mehrere Befehle ausführen? Hier ist eine einfache Möglichkeit, es zu schreiben. Sie müssen nur diese Zeichen in ein Paar eckiger Klammern [] schreiben: # sed '/^[RF]/d' sed-demo-1.txt Nach dem Löschen: Linux-Betriebssystem Unix-Betriebssystem Debian Ubuntu Arch Linux - 1 2 – Manjaro 3 4 5 6 Mit dem obigen Befehl werden die Zeilen gelöscht, die mit R oder F beginnen. 6. Löschen Sie Zeilen, die mit bestimmten Zeichen enden Dasselbe Prinzip gilt auch für das Löschen von Zeilen, die mit einem bestimmten Zeichen enden. Um beispielsweise Zeilen zu löschen, die mit m enden, können wir Folgendes tun: # sed '/m$/d' sed-demo.txt Nach dem Löschen: 3 RHEL 4 Roter Hut 5 Fedora 6 Arch Linux 7 CentOS 8 Debian 9. Ubuntu 10 openSUSE Um Zeilen zu löschen, die mit x oder m enden, können Sie Folgendes schreiben: # sed '/[xm]$/d' sed-demo.txt Nach dem Löschen: 3 RHEL 4 Roter Hut 5 Fedora 7 CentOS 8 Debian 9. Ubuntu 10 openSUSE 7. Löschen Sie Zeilen, die mit einem Großbuchstaben beginnen Hier kommt erneut die Frage: Was ist, wenn ich alle Zeilen löschen möchte, die mit einem Großbuchstaben beginnen? Müssen wir nach der obigen Methode alle 26 Buchstaben von A bis Z in [ ] schreiben? Eigentlich müssen wir das nicht tun, wir können einfach ein - zwischen A und Z hinzufügen: # sed '/^[A-Z]/d' sed-demo-1.txt Nach dem Löschen: Debian Ubuntu 2 – Manjaro 3 4 5 6 Nach dem Lesen dieses Artikels sind Sie schlau genug, um an weitere ähnliche Verwendungsmöglichkeiten zu denken. Schauen Sie sich doch einmal die folgenden Befehle an, um zu sehen, ob Ihnen welche einfallen. 8. Löschen Sie Zeilen mit alphabetischen Zeichen # sed '/[A-Za-z]/d' sed-demo-1.txt Nach dem Löschen: 3 4 5 6 9. Löschen Sie die Zeilen mit Zahlen # sed '/[0-9]/d' sed-demo-1.txt Nach dem Löschen: Linux-Betriebssystem Unix-Betriebssystem RHEL Red Hat Fedora Debian Ubuntu Zusätzlich können wir anhand dieses Beispiels ^ und $ hinzufügen, um den Unterschied zwischen den dreien besser zu erkennen: # sed '/^[0-9]/d' sed-demo-1.txt Nach dem Löschen: Linux-Betriebssystem Unix-Betriebssystem RHEL Red Hat Fedora Debian Ubuntu Arch Linux - 1 # sed '/[0-9]$/d' sed-demo-1.txt Nach dem Löschen: Linux-Betriebssystem Unix-Betriebssystem RHEL Red Hat Fedora Debian Ubuntu 2 – Manjaro 10. Mehr Tatsächlich ist der Dateiinhalt, den wir löschen möchten, spezifischer und einfache Bedingungen können unseren Anforderungen nicht genügen, sodass sed auch komplexere Bedingungskombinationen unterstützt. Wenn ich beispielsweise die Wörter „Linux“ in den Zeilen 1 bis 6 löschen möchte, dann: # sed '1,6{/Linux/d;}' sed-demo.txt Nach dem Löschen: 2 Unix-Betriebssystem 3 RHEL 4 Roter Hut 5 Fedora 7 CentOS 8 Debian 9. Ubuntu 10 openSUSE Löschen Sie die Zeile mit „System“ und die folgende Zeile: # sed '/System/{N;d;}' sed-demo.txt Nach dem Löschen: 3 RHEL 4 Roter Hut 5 Fedora 6 Arch Linux 7 CentOS 8 Debian 9. Ubuntu 10 openSUSE Zusammenfassen Damit ist dieser Artikel über die Verwendung des sed-Befehls zum effizienten Löschen bestimmter Zeilen einer Datei abgeschlossen. Weitere Informationen zur Verwendung des sed-Befehls zum Löschen bestimmter Zeilen einer Datei finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Beispielcode einer in Vue3 gekapselten Lupenkomponente
>>: Analyse der MySql CURRENT_TIMESTAMP-Funktion anhand eines Beispiels
1. Befehlseinführung nl (Anzahl der Zeilen) fügt ...
<br />Vorheriger Artikel: Webdesign-Tutorial...
Ziehen Sie das Bild: [mall@VM_0_7_centos ~]$ sudo...
Über wen Zeigt die am System angemeldeten Benutze...
1. Einleitung Dieser Artikel zeigt Ihnen, wie Sie...
In letzter Zeit habe ich jeden Tag an meinen Absch...
Ich kann mich über die Befehlszeile ganz normal b...
Heute hatte ich etwas Freizeit, um eine Website f...
Methode 1: Pycharm herunterladen und installieren...
Inhaltsverzeichnis Gedanken, die durch eine Onlin...
Detailliertes Beispiel zum Abrufen des Maximalwer...
1. Übersicht über SQLException Wenn bei der Verwe...
Inhaltsverzeichnis Vorwort: erreichen: Zusammenfa...
Antwort von Stackflow: Einfaches <br> genügt...
Einführung in kubectl kubectl ist ein Befehlszeil...