Sie können natürlich das Muster angeben, nach dem Sie mit regulären Ausdrücken suchen möchten. Wenn ich z.B. Zeilen entfernen wollte, die entweder “Hund” oder “Schwein” enthalten, könnte ich den Folgenden befehligen. Um alle Zeilen zu löschen, können Sie entweder das %-Symbol verwenden, das alle Zeilen darstellt, oder den Bereich 1,” bereich: Ab und zu, wenn ich den vi-Editor (oder vim) verwende, befinde ich mich in einer Situation, in der ich eine Reihe von Zeilen in der Datei löschen muss, die einem bestimmten Muster entsprechen. In meinen jüngeren Tagen habe ich aus vi herauszukommen und dann sed oder grep verwenden, um diese Linien loszuwerden, aber es stellt sich heraus, dass es eine wirklich einfache Möglichkeit gibt, dies in vi zu tun. So löschen Sie leere Zeilen oder Linien mit Leerzeichen (s); In diesem Handbuch erfahren Sie, wie Sie Zeilen löschen, die einem bestimmten Muster in einer Datei mit VIM entsprechen. Linux-Systemadministratoren arbeiten Tag für Tag mit Dateien. Irgendwann möchten Sie vielleicht nur Zeilen löschen, die einem bestimmten Muster oder einer Zeichenfolge in einer Datei entsprechen. Es gibt eine ganze Reihe von Werkzeugen, die Sie verwenden können, um das gleiche zu erreichen. Dies werden wir jedoch auf die Verwendung von VIM konzentrieren. Um Zeilen zu entfernen, die die Zeichenfolge amos enthalten, geben Sie im vim-Befehlsmodus den Folgenden Befehl ein und drücken Sie die Eingabetaste. Zum Beispiel, um alle Zeilen zu löschen, die “profil” enthalten (entfernen Sie die /d, um die Zeilen anzuzeigen, die der Befehl löscht): Um Zeilen zu löschen, die einem Muster in einer Datei mit dem vim-Editor entsprechen, können Sie ex-Befehl, g in Kombination mit dem Befehl d verwenden.

Wenn Sie Zeilen löschen möchten, die eines von mehreren angegebenen Wörtern enthalten, können Sie die Wörter durch einen vertikalen Balken, auch als Pipe-Zeichen, trennen (es ist das Zeichen, das Sie erhalten, wenn Sie die Umschalttaste und das umgekehrte Schrägstrich-Zeichen gleichzeitig drücken, zumindest auf englischsprachigen Tastaturen. Die vertikale Leiste bedeutet, dass eine “logische oder” Funktion ausgeführt werden soll. Wenn ich z.B. Zeilen mit den Wörtern “Katze” oder “Hund” löschen wollte, könnte ich den unten gezeigten Befehl verwenden. Zu sehen, dass dies ein Wahljahr ist … Vorausgesetzt, Sie haben eine Datei in vim geöffnet, und Sie möchten alle Zeilen löschen, die die Zeichenfolge “George Bush” enthalten, würden Sie einfach diesen vim search and delete-Befehl eingeben: Können wir die Zeile löschen/nicht löschen, die der Suchzeichenfolge vorangeht? Komplexere Muster können verwendet werden, z. B. das Löschen aller Zeilen, die leer sind oder nur Leerzeichen enthalten: Wenn ich eine “logische und” Funktion ausführen wollte, z. B. um Zeilen zu löschen, die sowohl die Wörter “Katze” als auch “Hund” enthalten, könnte ich den folgenden Befehl verwenden. vim FAQ: Wie führe ich ein vim “search and delete” mit einem vim Regular Expression Pattern (regex) durch? Ebenso können Sie verwenden, um mehrere Zeilen mit mehreren Mustern zu löschen.

Sie können einen Zeilenbereich angeben, über den der Befehl ausgeführt werden soll, indem Sie dem Befehl mit dem Zeilenbereich vorangehen. Wenn ich z.B. nur Zeilen löschen wollte, die das Wort “Hund” für die ersten fünf Zeilen enthalten, könnte ich den Folgenden befehligen. Wie würden Sie, anstatt zu löschen, übereinstimmende Zeilen durch eine einzelne neue Linie zwischen den verbleibenden Zeilen ersetzen? Wenn Sie mehr vim Suche / Löschen regex Beispiele möchten, lassen Sie einfach eine Notiz im Kommentarbereich unten und ich werde gerne einige arbeiten. Wenn Sie einfach löschen innerhalb der if-Anweisung alle Zeilen werden gelöscht werden. Viel schnellere Lösung ist es, ein Makro “ddj” aufzuzeichnen und es über die Datei abzuspielen.