tutorial online multiple example egrep regex unicode grep ascii

regex - online - grep wildcard example



(grep) Regex para que coincida con caracteres que no sean ASCII? (7)

Esto coincidirá con un único carácter que no sea ASCII:

[^/x00-/x7F]

Este es un PCRE válido ( Expresión regular compatible con Perl ).

También puedes usar los shorthand de POSIX :

  • [[:ascii:]] - coincide con un solo carácter ASCII
  • [^[:ascii:]] - coincide con un único carácter no ASCII

[^[:print:]] probablemente sea suficiente para usted. **

En Linux, tengo un directorio con muchos archivos. Algunos de ellos tienen caracteres que no son ASCII, pero todos son UTF-8 válidos. Un programa tiene un error que impide que funcione con nombres de archivo que no sean ASCII, y tengo que averiguar cuántos se ven afectados. Iba a hacer esto con find y luego hacer un grep para imprimir los caracteres que no son ASCII, y luego hacer un wc -l para encontrar el número. No tiene que ser grep; Puedo usar cualquier expresión regular estándar de Unix, como Perl , sed , AWK , etc.

Sin embargo, ¿hay una expresión regular para ''cualquier personaje que no sea un personaje ASCII''?


Esto resultó ser muy flexible y extensible. $ campo = ~ s / [^ / x00- / x7F] // g; # por lo tanto, todos los elementos no ASCII o específicos en cuestión podrían limpiarse. Muy agradable ya sea en la selección o preprocesamiento de elementos que eventualmente se convertirán en claves hash.


No, [^/x20-/x7E] no es ASCII.

Esto es ASCII real:

[^/x00-/x7F]

De lo contrario, recortará líneas nuevas y otros caracteres especiales que forman parte de la tabla ASCII.


Puedes usar esta expresión regular:

[^/w /xC0-/xFF]

Pregunta de caso, las opciones son Multiline .


Realmente no necesitas una expresión regular.

printf "%s/n" *[!/ -~]*

Esto también mostrará nombres de archivo con caracteres de control en sus nombres, pero considero que es una característica.

Si no tiene ningún archivo coincidente, el globo se expandirá a nada.


También puede consultar esta página: Expresiones regulares Unicode , ya que contiene algunas clases útiles de caracteres Unicode, como:

/p{Control}: an ASCII 0x00..0x1F or Latin-1 0x80..0x9F control character.


[^/x00-/x7F] y [^[:ascii:]] pierden algunos bytes de control por lo que las strings pueden ser la mejor opción a veces. Por ejemplo cat test.torrent | perl -pe ''s/[^[:ascii:]]+//n/g'' cat test.torrent | perl -pe ''s/[^[:ascii:]]+//n/g'' hará cosas extrañas en tu terminal, donde se comportarán las strings test.torrent .