2011-05-29 15:05:02 +0000 2011-05-29 15:05:02 +0000
221
221

Alle Zeilen in Notepad++ mit Ausnahme der Zeilen, die ein Wort enthalten, das ich benötige, löschen?

Ich habe eine Textdatei und möchte Zeilen, die mit <Path> beginnen, beibehalten und alle anderen Zeilen löschen.

Wie kann ich das machen?

Antworten (10)

315
315
315
2011-06-03 20:23:06 +0000

Es gibt einen einfachen Weg, dies zu erreichen. Sie müssen 2 Schritte durchführen:

  1. Gehen Sie zum Menü Suchen > Finden… > Wählen Sie die Registerkarte “Markieren”. Aktivieren Sie reguläre Ausdrücke. Suchen Sie nach ^<Path> (^ steht für Zeilenanfang). Vergessen Sie nicht, “Zeilen markieren” anzukreuzen und “Alle markieren”

zu drücken. 2. Gehen Sie zum Menü “Suchen - Lesezeichen - Nicht markierte Zeilen entfernen”.

67
67
67
2013-02-27 16:03:51 +0000

Dies kann ab 6.3 tatsächlich in zwei Schritten erfolgen. Ich denke, es kann auch früher gemacht werden, da ich 5.9 hatte, als ich es zum ersten Mal ausprobiert habe.

Stemas Post als Grundlage für diese Antwort verwenden. Jetzt gibt es einen Schritt weniger. Linien markieren und nicht markierte Linien entfernen. Erledigt. Detaillierte Anweisungen folgen.

  1. Suchmenü “Finden”. Klicken Sie im Dialogfeld “Suchen” auf die Registerkarte “Markieren”. Aktivieren Sie reguläre Ausdrücke. Suchen Sie nach ^<Path> (^ steht für Zeilenanfang). Vergessen Sie nicht, “Zeilen markieren” anzukreuzen und “Alle markieren”

zu drücken. 2. Menü Suchen -> Lesezeichen -> Nicht markierte Zeilen entfernen.

30
30
30
2013-07-08 16:51:09 +0000

Nur Regex-Lösung bereinigen

Zweistufige Variante

  1. regex replace

  2. regex replace

Einstufige Variante

Verwenden Sie ^(?!<Path>).*\r\n, um Übereinstimmungen durch eine leere Zeichenfolge zu ersetzen. Die verallgemeinerte Variante wäre ^(?!.*?test).*\r\n. Dadurch wird die Leerzeile am Ende der Datei nicht entfernt. Alle anderen Zeilen werden entfernt, einschließlich mehrerer aufeinanderfolgender leerer Zeilen._

Erklärung:

  1. (?!) ist ein negativer Look-Up. ^.*test.*$ wählt die ganze Zeile aus, die den angeforderten Text enthält.

  2. [\r\n]{2,} stimmt mit jeder \r\n überein, die mehr als einmal vorkommt, wenn es sich um Windows Neue Zeile handelt.

5
5
5
2015-12-17 11:43:30 +0000

Meiner Meinung nach ist es am einfachsten, einfach die Funktion “Alle im aktuellen Dokument finden” zu verwenden und dann entweder die Ergebnisse in eine neue Datei zu kopieren oder alle zu markieren und in der aktuellen Datei zu ersetzen.

Dies würde alle Zeilen mit Ihrem Text finden und sie unten auflisten. Klicken Sie einfach mit der rechten Maustaste auf das Suchergebnis und kopieren / einfügen.

4
4
4
2013-06-21 16:36:49 +0000

Gehen Sie zum Menü Suchen -> Finden… -> Reguläre Ausdrücke aktivieren. Suchen Sie nach “^Pfad” (^ steht für Zeilenanfang).

Klicken Sie auf die Schaltfläche “Alles im aktuellen Dokument finden”.

Das Fenster “Ergebnis finden” erscheint mit allen Zeilen des Musters. Wählen Sie diese per Kopieren/Einfügen in eine neue Registerkarte in Notepad++.

In dieser neuen Registerkarte gelangen Sie zu: Menü Suchen -> Ersetzen… -> Reguläre Ausdrücke aktivieren.

Im Feld “Was finden:” verwenden Sie das Muster: “Zeile \d+: ”. Lassen Sie das Feld “Ersetzen durch:” leer.

Klicken Sie auf die Schaltfläche “Alles ersetzen”.

3
3
3
2011-05-30 01:02:36 +0000

Vorausgesetzt, dass Sie tatsächlich <Path> und nicht einen Dateisystempfad abgleichen wollen, können Sie dies von der Befehlszeile aus mit Perl versuchen:

perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt

Es funktionierte mit Strawberry Perl unter Windows, also passen Sie es entsprechend an, wenn die Ergebnisse nicht Ihren Erwartungen entsprechen.

3
3
3
2011-05-29 18:07:54 +0000

Es ist ungeschickt, aber kopieren Sie alles nach Excel , und verwenden Sie dann =IF(LEFT(A1,6)="<Path>",A1,"") und kopieren Sie diese Formel bis ganz nach unten. Kopieren Sie sie dann zurück nach Notepad++. Es ist nicht ideal, aber es ist ziemlich einfach (wenn Sie Excel haben). Warnung: Es wird nicht gut mit eingerückten Zeilen funktionieren (Excel wird die Spalten verschieben, usw.).

2
2
2
2011-05-30 03:00:09 +0000

Es gibt keine einfache Möglichkeit, mit Notepad++ zu tun, was Sie wollen. Sie müssen entweder ein Programm auf Ihren Computer herunterladen oder etwas in VB skripten (ich nehme an, Sie sind unter Windows).

Mit sed können Sie auf zwei Arten tun, was Sie wollen. Das Dienstprogramm sed ist ein Favorit auf *nix und kann für Windows von den großen Leuten bei GnuWin http://gnuwin32.sourceforge.net/packages/sed.htm ) gefunden werden. Sie würden dieses Programm herunterladen und dann Ihren Befehl von der Eingabeaufforderung aus ausführen.

Löschen Sie alle Zeilen, die nicht enthalten: sed -i '/^<PATH>/!d' file

Drucken Sie alle Zeilen, die nicht enthalten, in eine neue Datei: sed -n '/^<PATH>/p' file > newfile

Ich schlage vor, Sie drucken die gewünschten Zeilen in eine neue Datei. Der Grund dafür ist, dass Sie die Regex-Anweisung wahrscheinlich nicht zum ersten Mal erhalten werden. Das Dienstprogramm sed verwendet die Basic-Syntax für reguläre Ausdrücke (siehe die Referenz unter http://www.regular-expressions.info/reference.html ). Wenn es sich um einen *nix-Pfad (/var/www) handelt, müssen Sie das Zeichen / escapen, damit Ihr Regex funktioniert.

Beispiel: sed -n '/^\/var\/www/p' file > newfile Dies gibt alle Zeilen aus, die mit ‘/var/www’ beginnen. Wenn ich das /-Zeichen escapen wollte, hätte der Befehl einen Fehler ausgelöst. Sie können ein Sonderzeichen (wie z.B. /) mit dem Backslash-Zeichen \ escapen.

1
1
1
2018-05-01 14:37:57 +0000

Bessere Lösung mit regex replace:

(?!^.*SOMETEXT.*$)^.+\r?\n

Und durch nichts ersetzen

0
0
0
2011-05-29 15:16:28 +0000

Verwenden Sie Suchen->Ersetzen und geben Sie einen regulären Ausdruck wie ^[^].* ein und ersetzen Sie alle mit Regular expression durch eine leere Zeichenfolge. Der nächste Schritt besteht darin, leere Zeilen zu finden, indem Sie nach \n\n suchen und \n durch Extended ersetzen, indem Sie 0 occurrences were found. mehrmals bis \r\n\r\n verwenden (verwenden Sie \r\n und \n\n\n\n\n\n\n je nach Dateiformat). Wenn Sie sehr viele leere Zeilen hintereinander haben, ist es schneller, \n oder noch mehr &007:s in der Suchzeichenfolge zu verwenden.