El comando tail
es una herramienta muy popular en sistemas Unix y Linux para observar en tiempo real el final de un archivo que está siendo actualizado, como puede ser el caso de logs de sistema o archivos de registro de aplicaciones. Sin embargo, por defecto, no tiene la capacidad de resaltar cadenas específicas en la salida. Para hacerlo, podemos combinar tail
con otras herramientas que nos permitan aplicar color a las cadenas de texto, como grep
o sed
.
Prerrequisitos
- Tener instalado un sistema basado en Unix (Linux o macOS).
- Familiaridad básica con la terminal y comandos como
tail
ygrep
. - Conocer el uso de las secuencias de escape ANSI para colorear texto.
Resaltado de texto usando grep
con el comando tail
Una de las maneras más simples de resaltar una cadena de texto al usar tail
es utilizando el comando grep
con la opción --color
. Esta opción resalta las coincidencias de una expresión regular dentro de la salida. El siguiente comando es un ejemplo básico:
tail -f archivo.log | grep --color=always "cadena_a_resaltar"
Explicación del comando:
tail -f archivo.log
: Esto observa el final dearchivo.log
en tiempo real. El modificador-f
asegura que continuemos viendo el archivo a medida que se añaden nuevas líneas.|
: Este símbolo es un pipe, que toma la salida del comando a la izquierda y la pasa como entrada al comando a la derecha.grep --color=always "cadena_a_resaltar"
: Aquí usamosgrep
para filtrar y resaltar la cadena que estamos buscando en el log. El flag--color=always
asegura que el texto coincidente siempre se muestre en color.
Por ejemplo, si deseas resaltar la palabra "ERROR" en un archivo de log, puedes hacer:
tail -f /var/log/syslog | grep --color=always "ERROR"
Con esto, cada vez que "ERROR" aparezca en el log, se mostrará resaltado en color (generalmente rojo por defecto).
Resaltado múltiple con diferentes colores
El comando anterior funciona bien si solo estás buscando una cadena. Sin embargo, en muchos casos, querrás resaltar diferentes palabras con distintos colores. Aquí es donde podemos combinar el uso de sed
o múltiples expresiones de grep
.
Usando grep
con expresiones regulares alternadas
Si deseas resaltar varias palabras diferentes con el mismo color, puedes usar grep
con expresiones regulares alternadas:
tail -f archivo.log | grep --color=always -E "ERROR|WARNING|INFO"
Esto resaltará las palabras "ERROR", "WARNING" e "INFO" en el mismo color. Para diferenciar con colores múltiples, se recomienda utilizar sed
o una herramienta más avanzada como ccze
o multitail
.
Resaltado de múltiples colores con sed
Usar sed
para resaltar múltiples palabras con diferentes colores requiere trabajar con las secuencias de escape ANSI. Estas secuencias permiten aplicar colores específicos a las cadenas de texto coincidentes.
Ejemplo:
tail -f archivo.log | sed --unbuffered \
-e 's/ERROR/\x1b[31m&\x1b[0m/g' \
-e 's/WARNING/\x1b[33m&\x1b[0m/g' \
-e 's/INFO/\x1b[32m&\x1b[0m/g'
Explicación del comando:
sed --unbuffered
: Procesa la salida de manera inmediata, para que las coincidencias se resalten en tiempo real.s/ERROR/\x1b[31m&\x1b[0m/g
: Aquí se reemplaza la palabra "ERROR" con la misma palabra, pero rodeada de secuencias ANSI que aplican color.\x1b[31m
es el código para el color rojo, y\x1b[0m
es el código para restablecer el color.\x1b[33m
es el código para el color amarillo, que se aplica a "WARNING".\x1b[32m
es el código para el color verde, que se aplica a "INFO".
Usando herramientas especializadas: ccze
o multitail
Si la configuración manual de colores se vuelve compleja o si trabajas con logs extensos, existen herramientas que simplifican este proceso. ccze
y multitail
son dos opciones que permiten visualizar logs con resaltado de sintaxis de manera predeterminada.
Ejemplo con ccze
:
tail -f archivo.log | ccze
ccze
aplica automáticamente colores a diferentes tipos de mensajes, como errores, advertencias y otros.
Ejemplo con multitail
:
multitail archivo.log
multitail
permite ver múltiples archivos de log a la vez, con la capacidad de resaltar cadenas de manera avanzada.
Conclusión
Resaltar texto en tiempo real en un archivo de log usando tail
es posible al combinarlo con herramientas como grep
, sed
, o utilidades avanzadas como ccze
o multitail
. Esta técnica es especialmente útil para depurar aplicaciones o supervisar el comportamiento del sistema, permitiendo que identifiques rápidamente mensajes clave dentro de grandes volúmenes de información.
Con las opciones descritas, puedes mejorar significativamente la legibilidad de tus logs y reducir el tiempo que tardas en identificar problemas críticos.