Tengo un programa que escupe una salida para stdout
gustar:
[OK] Something is ok
[OK] Something else is also ok
[FAIL] This does not look good
[FAIL] Neither does this
[OK] At least this is fine
Para detectar más fácilmente las fallas de la salida, me gustaría marcar las ocurrencias de la palabra clave FAIL
con rojo sin descartar los otros mensajes. Sería bueno si también pudiera resaltar las OK
palabras clave con verde :).
Hacer una canalización egrep --color FAIL
solo mostrará las líneas donde FAIL
está presente la palabra clave.
grep
solución, visite unix.stackexchange.com/a/34322tail -f
yawk
la magia, soy bueno para ir =)Respuestas:
Basado en
manatwork
el pequeño truco brillante "o nada" en la otra pregunta, ofrezco esto, que agrega la capacidad de obtener dos colores destacados:Es decir, ejecuta
grep
el resultado dos veces, con unaGREP_COLORS
variable de entorno diferente cada vez.El valor '01; 32 'significa "negrita verde", y el otro significa "negrita rojo". Consulte el artículo de Wikipedia sobre códigos ANSI para obtener más ideas.
Por desgracia, esto requiere GNU grep versión 2.5.3 o superior. Las versiones anteriores de GNU grep admitían un mecanismo de coloración diferente, pero esas versiones tienen un error que le impide usar la función en una tubería más de una vez. BSD grep emula el antiguo mecanismo de coloración grep de GNU, y funcionará dos veces en una tubería, pero grita sobre "subexpresión vacía" debido al
manatwork
hack.Puede eliminar las barras diagonales inversas al final de las dos primeras líneas para que sea una sola línea. Lo acabo de dividir aquí para mayor claridad y para jugar bien con el formato de página SE.
fuente
GREP_COLORS
, en plural. UtilizaGREP_COLOR
solo el método anterior , y ese método tiene un error que le impide hacer lo correcto. Si cambia el comando a utilizarGREP_COLOR=32
y tal, solo cambiará el color de resaltado de la primera coincidencia. Si canaliza el resultadohexdump -c
puede ver que agregar el segundoegrep
comando hace algo, pero no es ANSI legal. En pocas palabras: debe actualizargrep
para que esto funcione correctamente.GREP_COLOR
error (singular), a pesar de que la función fue obsoleta tan pronto como se reemplazó.Puede usar multitail o ccze para esto, ambos permiten que las configuraciones describan expresiones regulares para combinar y colores.
fuente
Basado en la respuesta de Warren Young, escribí este script de Python que hace lo mismo de manera más elegante y con mucho menos tipeo. Así es como usarías ese script:
fuente