Icono del sitio Binario 0

Cómo usar color en el comando tail para resaltar una cadena de texto en tiempo real

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Artículos Guías Manuales Sistemas Linux Windows Binario 0

FacebookEmailWhatsAppLinkedInRedditXShare

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

  1. Tener instalado un sistema basado en Unix (Linux o macOS).
  2. Familiaridad básica con la terminal y comandos como tail y grep.
  3. 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:

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:

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.

Salir de la versión móvil