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

- Link: https://binariocero.com/linux/como-usar-color-en-el-comando-tail-para-resaltar-una-cadena-de-texto-en-tiempo-real
- Published: 2024-10-20T11:48:22+02:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

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:

    ```wp-block-preformatted
    tail -f archivo.log | grep --color=always "cadena_a_resaltar"
    ```

#### Explicación del comando:

 * `tail -f archivo.log`: Esto observa el final de `archivo.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í usamos `grep` 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:

    ```wp-block-preformatted
    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:

    ```wp-block-preformatted
    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:

    ```wp-block-preformatted
    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`:

    ```wp-block-preformatted
    tail -f archivo.log | ccze
    ```

`ccze` aplica automáticamente colores a diferentes tipos de mensajes, como errores,
advertencias y otros.

#### Ejemplo con `multitail`:

    ```wp-block-preformatted
    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.
