Cómo eliminar todas las líneas que contienen caracteres que no sean ASCII usando Notepad++ o Emeditor

Cómo eliminar todas las líneas que contienen caracteres que no sean ASCII usando Notepad++ o Emeditor

¿Cómo elimino todas las líneas que contienen caracteres de teclado que no sean ASCII?

Intenté muchas veces códigos de expresiones regulares pero ninguno funciona como debería. Incluso probé este código [^\x00-\x7F]+pero no seleccionó todos los caracteres.

La idea que se me ocurrió es usar de esta manera, [^a-z0-9``~!@#$%^&*()-_=+[]{}\|;:'"<>,./?]pero todavía no funciona porque algunos de estos personajes no fueron deseleccionados como\ / | { } [ ] $ # ^ ( )

  1. Si una línea contiene caracteres que no están en la lista siguiente, quiero eliminarla, eliminarla o marcarla como favorita.

    0123456789`~!@#$%^&*()-_=+[]{}\/|;:'"<>,.?
    abcdefghijklmnopqrstuvwxyz
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    
  2. Ejemplo simple: hay más caracteres como este que se encuentran aquí:https://en.wikipedia.org/wiki/List_of_Unicode_characters

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

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

Respuesta1

[^\x00-\x7F]funciona bien, pero si desea utilizar una clase de caracteres largos como [^a-z0-9``~!@#$%^&*()-_=+[]{}\|;:'"<>,./?]los que tiene que escapar de los caracteres que tienen un significado especial (es decir, -[]\y agregar saltos de línea \r, \n.

Tu expresión regular se convierte en:

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

  • Ctrl+H
  • Encuentra qué: [^a-z0-9``~!@#$%^&*()\-_=+\[\]{}\\|;:'"<>,./?\r\n]+$ pero, nuevamente, [^\x00-\x7F]funciona bien y es más legible
  • Reemplazar con:LEAVE EMPTY
  • comprobar Envolver alrededor
  • comprobar expresión regular
  • Replace all

Resultado para el ejemplo dado:

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

Respuesta2

Si no conoce la solución y no utiliza Notepad++, puede instalar bash para Win 10, como mostré aquí.https://superuser.com/a/1252271/715210(Lo siento, siempre vuelvo a tus preguntas sobre soluciones alternativas de Linux;))

Tendría una solución, donde lamentablemente también perderás el apóstrofo.'

  1. abrir bash para Windows desde el menú inicio
  2. Vaya a la carpeta donde se encuentra su archivo cd /mnt/c/path/folder(la unidad C: está en /mnt/c)
  3. Si su archivo se llamafoo.txt podrías generar un archivobarra.txtcon este comando:

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

Explicación de las partes:

cat foo.txtgenera el archivo de texto y con la tubería |la salida se redirige al comando tr -cdque elimina todos los caracteres que no están en la lista después de entre '...'. Followed by a pipe tosed to remove the empty lines. Last but not least with> bar.txt` redirigimos la salida al archivobarra.txt

Gracias a:

Respuesta3

En Notepad++ esto es fácil:

  1. menúBuscar>Marca...

  2. Encuentra qué: [^\x00-\x7F]
    ☑ Marcar línea
    (•) Expresión regular

  3. PrensaEncuentra todos

  4. menúBuscar>Marcador>Eliminar líneas marcadas

información relacionada