So entfernen Sie mit Notepad++ oder Emeditor alle Zeilen, die Nicht-ASCII-Zeichen enthalten

So entfernen Sie mit Notepad++ oder Emeditor alle Zeilen, die Nicht-ASCII-Zeichen enthalten

Wie entferne ich alle Zeilen, die Nicht-ASCII-Tastaturzeichen enthalten?

Ich habe so oft reguläre Ausdruckscodes ausprobiert, aber keiner funktioniert so, wie er sollte. Ich habe sogar diesen Code ausprobiert, [^\x00-\x7F]+aber er hat nicht alle Zeichen ausgewählt

die Idee, die mir in den Sinn kommt, ist, diesen Weg zu verwenden [^a-z0-9``~!@#$%^&*()-_=+[]{}\|;:'"<>,./?], aber immer noch nicht funktioniert, weil einige dieser Zeichen nicht abgewählt wurden wie\ / | { } [ ] $ # ^ ( )

  1. Wenn eine Zeile Zeichen enthält, die nicht in der Liste unten aufgeführt sind, möchte ich sie entfernen oder als Lesezeichen speichern.

    0123456789`~!@#$%^&*()-_=+[]{}\/|;:'"<>,.?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    
  2. Einfaches Beispiel: Weitere Zeichen wie dieses finden Sie hier:https://en.wikipedia.org/wiki/Liste_der_Unicode-Zeichen

    0123456789`~!@#$%^&*()-_=+[]{}\|;:'"<>,./?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    ¤©ª«¬¯°±²³´µ¶·¸¹º»¼½¾¿÷ÆIJŒœƔƕƋƕ
    ƜƝƢƸƾDžNJNjǽǾǼɁɀȾɎʒəɼʰʲʱʴʳʵʶʷʸˁˀˇˆ˟ˠ
    ˩˧Ͱͱͳʹͼͻͺ͵ͿΏΔΘΞΛΣΠΦΧΨΩΪΫάέήίΰαβδε
    θηκλμξπςρφχψωϊϋϏώϑϐϓϒϔϕϖϠϟϞϝϜϡϢ
    ϤϣϧϫϬϮϯϰϱ₠₡₢₣₤₥₦₧₨₩₪₫€₭₮₯₰₱₲
    ₳₴₵₶₷₸₹₺₻₼₽₾₿⅐⅑⅒⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜
    ⅝⅞⅟℠℡™℣ℤ℥Ω℧ℨ℩KÅℬℭ℮ℯ⇀⇁ↀↁↂↃↄ
    ⇔⇕⇖⇗⇘⇙⇚⇛⇜⇝⇞⇟⇠⇡⇢⇣⇤⇥⇦⇧⇨⅀⅁⅂⅃⅄ⅅ
    ⅆⅇⅈⅉ⅊⅋⅌⅍ⅎ⅏ⅱⅲⅳⅴⅵⅶⅷⅸⅹⅺⅻⅼⅽ
    
  3. Erwartetes Ergebnis:

    0123456789`~!@#$%^&*()-_=+[]{}\|;:'"<>,./?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    

Antwort1

[^\x00-\x7F]funktioniert gut, aber wenn Sie eine lange Zeichenklasse wie verwenden möchten, [^a-z0-9``~!@#$%^&*()-_=+[]{}\|;:'"<>,./?]müssen Sie Zeichen mit einer besonderen Bedeutung maskieren (z. B. -[]\und Zeilenumbrüche hinzufügen \r, \n).

Ihr regulärer Ausdruck wird:

 [^a-z0-9``~!@#$%^&*()\-_=+\[\]{}\\|;:'"<>,./?\r\n]
 #                    ^    ^ ^   ^            ^^^^

  • Ctrl+H
  • Suchen nach: Funktioniert [^a-z0-9``~!@#$%^&*()\-_=+\[\]{}\\|;:'"<>,./?\r\n]+$ aber auch hier einwandfrei und ist besser lesbar[^\x00-\x7F]
  • Ersetzen mit:LEAVE EMPTY
  • check Umwickeln
  • check Regulärer Ausdruck
  • Replace all

Ergebnis für gegebenes Beispiel:

0123456789`~!@#$%^&*()-_=+[]{}\|;:'"<>,./?
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ

Antwort2

Wenn Sie der Lösung gegenüber agnostisch sind und nicht auf Notepad++ festgelegt sind, können Sie Bash für Win 10 installieren, wie ich hier gezeigt habehttps://superuser.com/a/1252271/715210(Entschuldigung, ich komme immer mit Linux-Workarounds auf Ihre Fragen zurück ;))

Ich hätte eine Lösung, bei der leider auch das Apostroph verloren geht'

  1. Öffnen Sie Bash für Windows über das Startmenü
  2. Gehen Sie zu dem Ordner, in dem sich Ihre Datei befindet cd /mnt/c/path/folder(das Laufwerk C: befindet sich auf /mnt/c)
  3. Wenn Ihre Datei den Namenfoo.txt Sie könnten eine Datei generierenbar.txtmit diesem Befehl:

    cat foo.txt | tr -cd '[:alnum:]\n\r~!@#$%^&*()-_=+{}\|;:<>,./?"`' | sed '/^$/d' > bar.txt

Erklärung der Teile:

cat foo.txtgibt die Textdatei aus und mit der Pipe |wird die Ausgabe an den Befehl umgeleitet tr -cd, der alle Zeichen entfernt, die nicht in der Liste enthalten sind. Nach dem Zwischenschritt '...'. Followed by a pipe tosed to remove the empty lines. Last but not least with> bar.txt leiten wir die Ausgabe in die Datei umbar.txt

Dank an:

Antwort3

In Notepad++ ist dies einfach:

  1. SpeisekarteSuchen>Markieren...

  2. Suchen nach: [^\x00-\x7F]
    ☑ Zeile markieren
    (•) Regulärer Ausdruck

  3. Drücken SieFinde alle

  4. SpeisekarteSuchen>Lesezeichen>Lesezeichenzeilen entfernen

verwandte Informationen