Filtrar logs gigantes con expresiones regulares
Clase 13 de 29 • Curso de Expresiones Regulares
Contenido del curso
El lenguaje: caracteres, operadores, y construcciones
- 5

El punto en regex: selecciona cualquier carácter
09:55 min - 6

\d \w \s: las 3 clases que localizan todo
13:55 min - 7

Cuantificadores regex: *, + y ? en acción
17:42 min - 8

Contadores en expresiones regulares
14:02 min - 9

Greedy vs lazy en regex: cuándo usar cada uno
07:47 min - 10

Negaciones con gorrito en expresiones regulares
06:49 min - 11

Cómo detectar números telefónicos sin letras
01:06 min - 12

Cómo procesar archivos CSV con millones de líneas
08:00 min
Uso práctico de Expresiones Regulares
- 13

Filtrar logs gigantes con expresiones regulares
Viendo ahora - 14

Expresiones regulares para URLs HTTP
08:07 min - 15

Regex para validar teléfonos con separadores y extensiones
12:30 min - 16

Validación de emails con regex
13:42 min - 17

Validación de coordenadas GPS con regex
17:16 min - 18

Validar nombres propios con regex
03:21 min
Usos avanzados en Expresiones Regulares
Expresiones Regulares en lenguajes de programación
- 20

Cómo extraer variables de URLs con regex
10:48 min - 21

Regex en múltiples lenguajes con CSV real
03:29 min - 22

Perl: CSV de fútbol en cero segundos
23:35 min - 23

Expresiones regulares en PHP: preg_match con CSV
09:29 min - 24

Extraer empates de archivos masivos con PHP
16:25 min - 25

Python regex para análisis de archivos CSV
21:58 min - 26

Lectura de archivos con BufferedReader en Java
07:59 min - 27

Escapar regex en Java: doble barra
08:48 min - 28

Validación de emails en JavaScript con regex
17:35 min - 29

Grep: filtra archivos masivos con regex
08:18 min
Analizar grandes archivos de logs con expresiones regulares te da precisión y velocidad para detectar vulnerabilidades, ataques o fallos de sistemas. Desde backend hasta soporte, esta técnica permite hallar exactamente lo que importa en medio de miles de líneas, sin ruido y con control total.
¿Por qué analizar logs con expresiones regulares?
Los logs de sistemas (por ejemplo en Unix y también en Windows) son generados por demonios de fondo y registran niveles como error, warning o mensajes informativos. Suelen ser enormes y verbosos, pero ahí está el detalle útil: desde eventos de usuario hasta direcciones de sensores o cambios de responsable. Incluso una “línea 69” puede contener actividad específica de un usuario.
¿Qué problemas resuelven en archivos enormes?
- Evitan coincidencias falsas como confundir "log" con login.
- Permiten buscar por línea completa y por nivel exacto.
- Filtran por usuario o patrón sin revisar todo manualmente.
- Aceleran la inspección frente a un simple Control F.
¿Qué habilidades te aporta?
- Identificar y usar anclas de línea: ^ y $ para inicio y fin.
- Escapar caracteres reservados: corchetes como [ y ].
- Aplicar comodines: .* para “lo que sea”.
- Usar agrupaciones: paréntesis para capturar datos como el usuario tras "user@".
- Combinar con línea de comando: grep y tail para velocidad.
¿Cómo construir una regex para filtrar logs?
La idea es describir el formato habitual: un encabezado entre corchetes, el tipo de mensaje y el contenido. Se escapan los corchetes, se ancla la línea y se usa .* para lo variable. Así se obtiene exactitud sin depender de un texto fijo.
¿Cómo delimitar inicio y fin de línea?
- Ancla el principio y el cierre para evitar “colas” no deseadas.
^\[log\].*warn.*$
- ejemplo: busca solo líneas con encabezado "[log]" y nivel warning.
- cambia "warn" por "error" si necesitas filtrar errores.
^\[log\].*error.*$
¿Cómo filtrar niveles y usuarios?
- Si el formato incluye un usuario con correo, puedes precisar coincidencias.
^\[log\].*@Selis\.MX\s.*$
-
ejemplo: encuentra líneas del log donde aparece "@Selis.MX" seguido de un espacio.
-
Para capturar quién es el usuario tras "user@" y reutilizarlo:
^\[log\].*user@(\w+).*$
-
el grupo (\w+) obtiene el identificador del usuario.
-
útil para reemplazar o listar ocurrencias por usuario.
-
Recuerda: [ y ] se escapan porque los corchetes son reservados para clases de caracteres.
¿Qué flujo práctico usar con grep y editores?
Para archivos gigantes, la línea de comando te da resultados en segundos. Luego, en un editor con búsqueda por regex, replicas el patrón y exploras con más comodidad.
¿Cómo combinar tail y grep?
- ver las últimas tres líneas del archivo:
tail -n 3 sistema.log
- buscar warnings en todo el archivo con regex extendida:
grep -E '^\[log\].*warn.*$' sistema.log
- filtrar por usuario específico:
grep -E '^\[log\].*@Selis\.MX\s.*$' sistema.log
- listar usuarios tras "user@":
grep -Eo 'user@(\w+)' sistema.log
¿Qué reto practicar?
- abre un archivo de log real.
- míralo con tail y toma las últimas 3 líneas.
- en tu editor con regex (Atom, One, TextWrangler en Mac), busca todas las líneas que sigan el mismo formato que la última o la penúltima.
- diferencia entre buscar texto plano y usar patrones con anclas, escapes, comodines y agrupaciones.
- identifica tus propios errors, warnings y debug messages dentro de un global manager de errores.
¿Tienes un patrón que te haya funcionado especialmente bien o un formato de log difícil? Cuéntalo en comentarios y comparte tu enfoque.