Este documento explica el comando grep y las expresiones regulares. Grep permite realizar búsquedas dentro de archivos de texto usando patrones simples o complejos. Las expresiones regulares son patrones que permiten buscar elementos con una forma determinada pero no siempre igual, como direcciones de email o números de identificación. El documento describe las reglas básicas para construir expresiones regulares como el uso de corchetes, llaves y caracteres especiales.
1. Comando grep y
Expresiones Regulares
Prof. Pablo Macón
profemacon@gmail.com
http://pablomacon.wix.com/home/
2. Comando grep
Una de las funciones elementales que debe
satisfacer una base de datos es permitir
consultar los datos guardados en ella.
El comando que nos va a permitir efectuar
búsquedas dentro de nuestros archivos de
texto será: grep
3. Comando grep
Es un filtro que se aplica a la entrada
estándar y que tiene como resultado
mostrar en la salida estándar la o las líneas
que coinciden con la o las expresiones
marcadas. Esas expresiones pueden ser
simples palabras o patrones complejos
5. Comando grep
También podemos combinarlo
concatenándolo a otros comandos:
cat /etc/passwd | grep “usuario”
ls /bin | grep “am”
6. Comando grep
Opciones:
-e permite introducir varios patrones de
búsqueda
grep –e “garcia” –e “flores” usuarios
grep –e “lopez” –e “2005” discos
7. Comando grep
Opciones:
-i ignora distinción entre mayúsculas y
minúsculas (ignore case)
grep –i “garcia” usuarios
Trae las líneas que contienen Garcia GARCIA
garcia GArcia, pero no García ¿por qué?
8. Comando grep
Opciones:
-v muestra las líneas que no coinciden
con el patrón buscado
grep –v “garcia” usuarios
Trae las líneas que NO contienen garcia
9. Comando grep
Opciones:
-w busca coincidencias de palabras
completas
grep –w “garcia” usuarios
Trae las líneas que contienen garcia pero
no si contiene garcias
11. Comando grep
Opciones:
-q modo silencioso, no muestra nada en
la salida estándar
Por ejemplo para utilizarlo como condición
en un if y que no muestre lo que estoy
buscando
12. Comando grep
Opciones:
-q modo silencioso, no muestra nada en
la salida estándar
if grep –q “usuario” /etc/passwd
then echo “usuario autorizado”
else echo “usuario no autorizado”
14. Expresiones regulares
Son patrones regulares que permiten
buscar cosas que tienen una forma
determinada pero que no siempre es igual:
Direcciones de e-mail, cédulas de identidad
¿Qué ejemplos se les ocurren?
15. Expresiones regulares
Por ejemplo las direcciones de e-mail se
pueden descomponer de:
Una serie de caracteres que pueden
incluir, letras, números y algunos
símbolos especiales + @ + otros
caracteres + . +
com/gub/edu/tv/us/fr/uy
16. Expresiones regulares
Por ejemplo las ip se componen de:
Un número del 0 al 255 + . +
un número del 0 al 255 + . +
un número del 0 al 255 + . +
un número del 0 al 255
17. Expresiones regulares
Nuestro trabajo es encontrar esas
regularidades que luego nos van a
simplificar las cosas, porque si queremos
buscar todos los usuarios que tienen cédula
y no RUT ¿cómo podríamos hacerlo si no es
con expresiones regulares?
19. Expresiones regulares - reglas
1 - uno o varios caracteres cualquiera,
encerrados en comillas simples van a tener
como resultado de la búsqueda a esos
mismos caracteres en el mismo orden
grep ‘pablo’ /etc/passwd
20. Expresiones regulares - reglas
2 – un . (punto) significa cualquier carácter,
pero solo uno. Es como el ? que utilizamos
con ls
grep ‘.ash’ /etc/passwd
21. Expresiones regulares - reglas
3 – los corchetes (paréntesis rectos) se
usan para encerrar un rango de caracteres
o varios caracteres diferentes, pero solo un
carácter por vez:
grep ‘100[0-9]’ /etc/passwd
22. Expresiones regulares - reglas
4 – ^ es la negación, va a traer las líneas
que no contengan los caracteres que le
siguen
grep ‘alo[^n]so’ /etc/passwd
23. Expresiones regulares - reglas
5 – las llaves encierran el número de
veces que se repite el/los caracteres
anteriores, si son varios caracteres
tenemos que agruparlos con paréntesis
grep –iE ‘([0-9a-f][0-9a-f]:){5}([0-
9a-f][0-9a-f])’ regex
24. Expresiones regulares - reglas
• 6 – los símbolos de menor y mayor nos
sirven para delimitar la palabra
• < para inicio de palabra
• > para fin de palabra
• Pero necesitamos poner la delante de
ellos
25. Expresiones regulares - reglas
• 6 – los símbolos de menor y mayor nos
sirven para delimitar la palabra
• Así para buscar las palabras de 4 letras
mínimo y 5 máximo ponemos:
grep –iE ‘<[a-z]{4,5}>’ /etc/passwd
26. Expresiones regulares - reglas
Las cédulas de los usuarios
grep –E ‘[0-9]{6-7}-[0-9]’ usuarios
una dirección ip
grep –E ‘([0-9]{1,3}.){3}([0-9]{3})’
usuarios