Regex: Entferne Zeilen die enthalten

Ich habe ein langes Dokument mit Befehlen. Mit Notepad ++ oder Regex möchte ich alle Zeilen löschen, die “help” enthalten, einschließlich keyboard_help usw.

Wie kann das gemacht werden?

   

Dies ist auch mit Notepad ++ möglich

  • Gehen Sie zum Suchmenü Strg + F und öffnen Sie die Registerkarte "Mark" Markieren "Mark" .
  • Markieren Sie "Bookmark line" (wenn die Registerkarte "Mark" auf die aktuelle Version aktualisiert wird).

  • Geben Sie Ihren Suchbegriff ein und klicken Sie auf "Mark All" markieren "Mark All"

    • Alle Zeilen, die den Suchbegriff enthalten, sind mit einem Lesezeichen versehen.
  • Gehen Sie nun zum Menü "Search -> Bookmark -> Remove Bookmarked lines"

  • Erledigt.

Eine andere Möglichkeit, dies in Notepad ++ zu tun, ist alles im Dialog Suchen / Ersetzen und mit Regex:

  • Strg + h , um den Suchen-Ersetzen-Dialog aufzurufen.

  • Im Feld Find what: enthalten Sie Ihre Regex:. .*help.*\r?\n (wobei \r optional ist, falls die Datei keine Windows-Zeilenenden hat).

  • Lassen Sie das Textfeld Replace with: leer.

  • Stellen Sie sicher, dass das Optionsfeld Regulärer Ausdruck im Bereich Suchmodus ausgewählt ist. Klicken Replace All und voila! Alle Zeilen, die Ihre Suchworthilfe enthalten help wurden entfernt.

How-To-Zeile ersetzen in N ++

Einfache Aufgabe mit grep :

 grep -v help filename 

Append > newFileName , um die Ausgabe an eine neue Datei umzuleiten.


Aktualisieren

Um es zu verdeutlichen, druckt das normale Verhalten die Zeilen auf dem Bildschirm. Um es in eine Datei zu pipen, kann das > verwendet werden. Also in diesem Befehl:

 grep -v help filename > newFileName 
  1. grep ruft offensichtlich das grep Programm auf
  2. -v ist ein Flag zum Invertieren der Ausgabe. Mit defulff gibt grep die Zeilen aus, die dem angegebenen Muster entsprechen. Mit diesem Flag werden die Zeilen gedruckt, die nicht mit dem Muster übereinstimmen.
  3. help ist das passende Muster
  4. filename ist der Name der Eingabedatei
  5. > Leitet die Ausgabe auf das folgende Element um
  6. newFileName die neue Datei, in der die Ausgabe gespeichert wird.

Wie Sie vielleicht bemerkt haben, werden Sie keine Dinge in Ihrer Datei löschen. grep liest es und eine andere Datei wird gespeichert und entsprechend geändert.

Sie können dies mit sed: sed '/help/ d' < inputFile > outputFile

Wenn Sie unter Windows versuchen, findstr , keine Drittanbieter-Tools benötigt:

 findstr /V /L "searchstring" inputfile.txt > outputfile.txt 

Es unterstützt Regex auch! Lesen Sie einfach die Hilfe des Tools findstr /?

PS Wenn Sie mit großen, HUGE Dateien (wie 400mb Protokolldateien) arbeiten möchten, ist ein Texteditor nicht sehr speicher effizient, also, wie bereits erwähnt, sind Befehlszeilen-Tools der Weg zu gehen. Aber da ist kein Grep an den Fenstern, also …

Ich habe das einfach auf einer 1GB Log-Datei ausgeführt und es hat buchstäblich 3 Sekunden gedauert.

Suche mit regulärem Ausdruck:

^.*(help).*$