Expresiones Regulares en Linux con grep
1. Preparación del entorno #
Descargar El Quijote desde Gutenberg #
1wget https://www.gutenberg.org/files/2000/2000-0.txt -O quijote.txt
Comprobar contenido #
1less quijote.txt
2. MÓDULO 1 - grep básico (sin regex) #
¿Qué es grep? #
grep busca líneas que contienen un texto patrón.
1grep "Quijote" quijote.txt
👉 Muestra todas las líneas donde aparece la palabra Quijote.
Ignorar mayúsculas/minúsculas #
1grep -i "quijote" quijote.txt
Contar líneas con coincidencias #
1grep -c "Quijote" quijote.txt
-c cuenta líneas que contienen el patrón, no el número total de apariciones. Para contar cada aparición con GNU grep:
1grep -o "Quijote" quijote.txt | wc -l
Mostrar número de línea #
1grep -n "Sancho" quijote.txt
Ejemplos #
- Busca líneas con la palabra
caballero
1grep "caballero" quijote.txt
- Cuenta cuántas líneas contienen
Dulcinea
1grep -c "Dulcinea" quijote.txt
- Busca
Rocinanteignorando mayúsculas
1grep -i "rocinante" quijote.txt
3. MÓDULO 2 - Regex básicos #
Activamos regex extendidas con
-E
1grep -E "patrón" archivo
El punto . #
Coincide con cualquier carácter
1grep -E "Don.Q" quijote.txt
✔ Coincide con Don Quijote, Don-Quijote, etc.
Clases de caracteres [] #
1grep -E "c[ao]sa" quijote.txt
✔ Coincide con casa y cosa
Rangos #
1grep -Eo "\b[[:upper:]][[:lower:]]+\b" quijote.txt
✔ Extrae palabras que empiezan por mayúscula, según la configuración regional activa
Ejemplos #
- Busca palabras que empiecen por
Qmayúscula
1grep -E "\bQ[a-zA-Z]*\b" quijote.txt
- Busca
Sanchoseguido de cualquier carácter
1grep -E "Sancho." quijote.txt
- Encuentra palabras que contengan
ll
1grep -E "\b[a-zA-Z]*ll[a-zA-Z]*\b" quijote.txt
4. MÓDULO 3 - Cuantificadores #
* (0 o más) #
1grep -E "sanch.*" quijote.txt
+ (1 o más) #
1grep -E "ll+" quijote.txt
✔ ll, lll, etc.
? (0 o 1) #
1grep -E "caballer?o" quijote.txt
✔ caballeo / caballero (la r es opcional)
{n,m} #
1grep -E "[0-9]{4}" quijote.txt
✔ Números de 4 cifras
Ejemplos #
- Busca palabras con 3 letras iguales seguidas
1grep -E "\b([a-zA-Z])\1\1\b" quijote.txt
- Encuentra números de 2 o 3 cifras
1grep -E "\b[0-9]{2,3}\b" quijote.txt
- Busca palabras con
rr
1grep -E "\b[a-zA-Z]*rr[a-zA-Z]*\b" quijote.txt
5. MÓDULO 4 - Anclas #
Inicio de línea ^ #
1grep -E "^Capítulo" quijote.txt
Final de línea $ #
1grep -E "fin\.$" quijote.txt
Ejemplos #
- Líneas que empiezan por
Don
1grep -E "^Don" quijote.txt
- Líneas que terminan en punto
1grep -E "\.$" quijote.txt
- Líneas vacías:
1grep -E "^$" quijote.txt
6. MÓDULO 5 - Palabras completas #
Límite de palabra \b #
1grep -E "\bpan\b" quijote.txt
✔ No coincide con panza
Ejercicios #
- Busca la palabra exacta
rey
1grep -E "\brey\b" quijote.txt
7. MÓDULO 6 - Alternativas y grupos #
Alternativa | #
1grep -E "Sancho|Quijote" quijote.txt
Grupos () #
1grep -E "(Don|San) [A-Z][a-z]+" quijote.txt
✔ Don Quijote, San Pedro, etc.
Ejercicios #
- Busca
DonoDoña
1grep -E "\b(Don|Doña)\b" quijote.txt
- Busca nombres propios
1grep -E "\b[A-Z][a-záéíóúñ]{2,}\b" quijote.txt
8. MÓDULO 7 - Filtrado avanzado #
Excluir líneas #
1grep -v "Quijote" quijote.txt
Encadenar con | (pipes) #
1grep -i "sancho" quijote.txt | grep -i "panza"
Contar patrones complejos #
1grep -Eo "\b[A-Z][a-z]{5,}\b" quijote.txt | wc -l
9. MÓDULO 8 - Ejemplos #
Ejercicio 1 #
Mostrar líneas que empiezan por mayúscula y terminan en punto
1grep -E "^[A-Z].*\.$" quijote.txt
Ejercicio 2 #
Encontrar palabras de más de 10 letras
1grep -Eo "\b[[:alpha:]]{11,}\b" quijote.txt
Ejercicio 3 #
Contar cuántas veces aparece un nombre propio
1grep -Eo "\bSancho\b" quijote.txt | wc -l
Resumen del tema
Conceptos clave #
grep -E(Extended Regular Expressions): habilita cuantificadores y operadores avanzados sin necesidad de escapar con barras inversas.- Metacaracteres y Clases:
.(cualquier carácter),[a-z](rangos de caracteres),[^0-9](negación de conjunto). - Cuantificadores:
*(0 o más),+(1 o más),?(0 o 1),{n,m}(entre n y m repeticiones). - Anclas y Límites:
^(inicio de línea),$(final de línea),\b(límite de palabra exacta),^$(línea vacía). - Grupos y Alternativas:
|(OR lógico),(a|b)(agrupación de patrones). - Extracción de Coincidencias (
grep -o): imprime únicamente el texto exacto que coincide con el patrón en lugar de toda la línea.
Qué debes recordar #
Usa grep -E con anclas (^, $) y delimitadores (\b) para realizar búsquedas y extracciones de texto precisas en ficheros de configuración y logs.