viernes, 17 de junio de 2016

Rangos de caracteres tradicionales

Si queremos construir una expresión regular que encuentre cualquier archivo en nuestra lista que empiece con una letra mayúscula, podríamos hacer ésto:

[me@linuxbox ~]$ grep -h '^[ABCDEFGHIJKLMNOPQRSTUVWXZY]' dirlist*.txt

Es simplemente una forma de poner todas las letras mayúsculas en una expresión entre corchetes. Pero la idea de escribir todo eso es muy inquietante, así que aquí tenemos otra forma:

[me@linuxbox ~]$ grep -h '^[A-Z]' dirlist*.txt
MAKEDEV
ControlPanel
GET
HEAD
POST
X
X11
Xorg
MAKEFLOPPIES
NetworkManager
NetworkManagerDispatcher

Usando un rango de tres caracteres, podemos abreviar las 26 letras. Cualquier rango de caracteres puede expresarse de esta forma incluyendo rangos múltiples, como esta expresión que encuentra todos los archivos cuyo nombre empieza con letras y números:

[me@linuxbox ~]$ grep -h '^[A-Za-z0-9]' dirlist*.txt

En los rangos de caracteres, vemos que el carácter guión se trata especialmente, entonces ¿cómo incluimos el carácter guión en una expresión entre corchetes? Haciéndolo el primer carácter en la expresión. Considera estos dos ejemplos:

[me@linuxbox ~]$ grep -h '[A-Z]' dirlist*.txt

Ésto encontrará todos los archivos cuyo nombre contiene una letra mayúscula. Mientras que:

[me@linuxbox ~]$ grep -h '[-AZ]' dirlist*.txt

encontrará todos los archivos cuyo nombre contiene un guión, o una letra "A" mayúscula o una letra "Z" mayúscula.

No hay comentarios:

Publicar un comentario