En los dos posts anteriores («Búsqueda de patrones con grep«) y («Expresiones regulares básicas con grep«) explicamos cómo utilizar palabras y expresiones regulares básicas para buscar con grep patrones dentro de archivos de texto. En esta oportunidad ilustraremos el uso de expresiones regulares más avanzadas para cumplir la misma función.
Buscar con grep palabras que terminen con una cadena de texto determinada
El punto (.) es una expresión regular que representa cualquier caracter. Dado el archivo ejemplo1.txt:
Esta no es fama digna de una dama, y mi auto nuevo no es de alta gama. Andar a pie es un drama, pero el precio de la nafta la atención no me llama.
el siguiente comando devolverá todas las líneas donde se encuentre la cadena de texto «ama»
[pastacode lang=»bash» manual=»grep%20′.ama’%20ejemplo1.txt» message=»» highlight=»» provider=»manual»/]
Si quisiéramos ver solamente las líneas donde ama aparezca precedida por exactamente un caracter:
[pastacode lang=»bash» manual=»grep%20-w%20′.ama’%20ejemplo1.txt» message=»» highlight=»» provider=»manual»/]
Podemos ver ambos resultados en la Fig. 1 (las ocurrencias del patrón en cada caso se muestran en rojo):
Dos variaciones de este ejemplo consisten en buscar 1) cero o más ocurrencias (*) de un caracter dado:
[pastacode lang=»bash» manual=»grep%20’a*’%20ejemplo1.txt» message=»» highlight=»» provider=»manual»/]
El comando anterior devolverá todas las líneas donde encuentre la letra a mientras que
[pastacode lang=»bash» manual=»grep%20’l%5C%2B’%20ejemplo1.txt» message=»» highlight=»» provider=»manual»/]
devolverá las líneas donde identifique 2) una o más ocurrencias (\+) de l.
Resumiendo:
- . se utiliza para representar cualquier caracter
- * representa cero o más ocurrencias del caracter anterior
- \+ indica una o más ocurrencias del caracter que le antecede
Buscar con grep secuencias de caracteres alfanuméricos
Como mencionamos en el post anterior, podemos representar cualquier caracter numérico mediante [0-9], las letras minúsculas con [a-z], y las mayúsculas con [A-Z]. Veamos ahora cómo ver los mensajes del kernel relacionados con las particiones de nuestro sistema. Recordemos que las mismas tienen el formato sdXY donde X es una letra minúscula mientras que Y es un número que indica la partición propiamente dicha.
El comando que nos permite acceder a esta información es el siquiente:
[pastacode lang=»bash» manual=»dmesg%20%7C%20grep%20sd%5Ba-z%5D%5B0-9%5D» message=»» highlight=»» provider=»manual»/]
Espero que les sirva. ¡Nos leemos en breve!
Un comentario en «Buscar con grep expresiones regulares avanzadas»
Hola, necesito ayuda, necesito tener este ejercicio bien
1. números enteros (positivos o negativos)
2. números decimales (con una coma como separador decimal)
3. números decimales (con una coma o un punto como separador decimal)
4. números de teléfonos (de nueve cifras, que empiecen por 9 o 6)
5. códigos postales (de cinco cifras, que empiecen como mucho por 5)
6. DNI (siete u ocho cifras que pueden ir seguidas de una letra)
7. fechas (dd/mes/año)
8. palabras en minúsculas sin números
9. palabras en las que sólo la primera letra esté en mayúscula
Gracias de Antemano, mi clase te lo agradecera, ademas de Failsystems