Wie lösche ich Zeilen ohne "." in Notepad ++? [Duplikat]


11

In Notepad ++ habe ich viele Zeilen im Format:

abc.xyz

wo "abc" Leerzeichen oder - oder Zahlen haben könnte.

Wie lösche ich Zeilen ohne "."? Wenn eine Zeile kein "." Hat, möchte ich, dass sie vollständig entfernt wird und nicht einmal eine leere Zeile bleibt.

Antworten:


40

Wie lösche ich Zeilen ohne .?

  • Menü "Suchen"> "Ersetzen" (oder Ctrl+ H)

  • Stellen Sie "Find what" auf ^[^\.]*\r\n

    • Sie können \r\nabhängig von den EOLs in Ihrer Datei durch reguläre EOL-Ausdrücke (End of Line) ersetzen (siehe "Ich habe eine andere EOL in meiner Datei, was kann ich tun?" Und "Es ist mir egal, welche EOLs meine Datei verwendet , was kann ich tun? "unten).
  • Deaktivieren Sie "Ersetzen durch"

  • Aktivieren Sie "Regulärer Ausdruck"

  • Klicken Sie auf "Alle ersetzen"

    Bild

Anmerkungen:

  • Das Obige setzt voraus, dass die letzte Zeile in der Datei eine nachfolgende EOL hat.

  • Das oben Gesagte setzt auch voraus, dass Sie eine Textdatei mit Windows EOLs bearbeiten \r\n.

Vorher :

abc.xyz
abcdef
abc 123.xyz
abc 123def

Nachher :

abc.xyz
abc 123.xyz

Ich habe eine andere EOL in meiner Datei. Was kann ich tun?

  • Die Windows EOL ist \r\n.

  • Wenn Sie Dateien mit einer anderen EOL verwenden, können Sie diese über das Menü "Bearbeiten"> "EOL-Konvertierung" in Windows-EOLs konvertieren.

  • Wenn Sie nicht mit Windows EOLs arbeiten und diese nicht konvertieren möchten, verwenden Sie stattdessen Folgendes:

    • Verwenden Sie \nanstelle von \r\nfür Unix / OS X EOLs

    • Verwenden Sie EOLs \ranstelle von \r\nMac OS (bis Version 9)


Ich weiß nicht, welche EOLs meine Datei verwendet. Was kann ich tun?

  • Sie können \Roder (?:\r\n?|\n)oder (?:\r?\n?)anstelle von verwenden \r\n. Dies umgeht jedes Problem mit den tatsächlich in der Datei verwendeten EOLs.

  • Sie können auch verwenden (?:\r?\n?|$). Dieser Ausdruck funktioniert, wenn in der letzten Zeile der Datei kein EOL vorhanden ist.


Weiterführende Literatur


5
Sie können \ R verwenden, um jedem Zeilenumbruch zu entsprechen.
user694733

@ user694733 Bitte erklären? \rstimmt nicht mit der EOL unter Windows überein. Wenn Sie das entfernen \n, bleiben leere Zeilen übrig. OP Stated "Ich möchte, dass es vollständig entfernt wird, nicht einmal eine leere Zeile."
DavidPostill

Großbuchstaben R. N ++ verwendet PCRE, das dies als Sonderzeichenklasse hat, wenn mein Gedächtnis mir recht tut.
user694733

@ user694733 Ah. IN ORDNUNG. Getestet und es funktioniert.
DavidPostill

regex101.com ist eine bessere Seite zum Lernen von Regex als Regexexr
Katze

14

Die akzeptierte Antwort ist korrekt, aber Sie haben nicht immer Regex bereit. Also präsentiere ich eine einfachere Lösung.

  1. Ctrl+ F- Klicken Sie auf die Registerkarte Markieren
  2. Stellen Sie "Find what" auf .
  3. Aktivieren Sie die Option "Lesezeichenzeile" (mit freundlicher Genehmigung von Wrass).
  4. Suchmodus = Normal
  5. Klicken Sie auf Alle markieren -> Sie sollten einen blauen Kreis neben den mit Lesezeichen versehenen Zeilennummern sehen.
  6. Navigieren Sie dann zum Menü Suchen -> Lesezeichen -> Nicht markierte Zeilen entfernen.

Dies ist eine schöne, einfache Alternative. Sie können jedoch auch erwähnen, dass Sie im Dialogfeld "Markieren" auch die Option "Lesezeichenzeile" aktivieren sollten. Andernfalls werden alle Zeilen entfernt.
Wrass

Guter Punkt, mein Notizblock erinnerte sich an das letzte Mal, also habe ich das vergessen.
Zikato

Ich benutze die ganze Zeit Regex, aber ich würde diese Methode wegen ihrer Einfachheit immer noch verwenden. Haftungsausschluss: Ich benutze auch häufig die verschiedenen Lesezeichenfunktionen in Notepad ++.
JPhi1618

Da Sie mit Ihrer Formatierung nicht zufrieden waren, habe ich eine Bearbeitung eingereicht, die Sie meiner Meinung nach angenehmer finden werden. Sie können es jederzeit ablehnen oder zurücksetzen, wenn Sie nicht einverstanden sind.
jpmc26
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.