Estoy ejecutando un código de prueba de unidad. El código de prueba de la unidad genera texto normal. Hay mucho texto, así que quiero resaltar para el usuario palabras clave importantes.
En este caso, las palabras clave son "PASS" y "FAIL".
¿Cómo coloreas "PASS" para que sea verde y "FAIL" para que sea rojo?
bash
shell-script
scripting
colors
Trevor Boyd Smith
fuente
fuente
Respuestas:
supercat
parece hacer lo que estás buscando.No parece haber ninguna forma de decirle qué colorear en la línea de comando, debe especificar un archivo de configuración.
Creo recordar que solía haber un programa llamado 'hilite' o 'hl' que resaltaba el texto que coincidía con un patrón (como
grep --colour
, pero que también mostraba líneas que no coincidían), pero no pude encontrarlo cuando lo busqué.Finalmente, GNU
grep
se puede usar para resaltar patrones, pero solo se puede usar un color (es decir, no se puede PASAR en verde y FALLO en rojo, ambos se resaltarán con el mismo color).Canalice sus datos a través de algo como esto:
Este ejemplo usa egrep (aka
grep -E
), pero también funciona la expresión regular-G
básica,-F
la cadena fija y-P
PCRE.Todos los partidos serán resaltados. El valor predeterminado es rojo, o establece el GREP_COLOR env var.
La clave de este trabajo es que la final
|$
en el patrón coincide con el final de la línea (es decir, todas las líneas coinciden), por lo que todas las líneas se mostrarán (pero no se colorearán).El
\b
son marcadores de límite de palabra para que coincida con por ejemplo FALLO FALLO pero no. no son necesarios, así que elimínelos si desea unir palabras parciales.Aquí está el script de ejemplo de envoltura para supercat que escribí ayer. Funciona, pero al escribirlo, descubrí que Supercat no tiene ninguna opción para las búsquedas que no distinguen entre mayúsculas y minúsculas. OMI, eso hace que el programa sea significativamente menos útil. Sin embargo, simplificó enormemente el script porque no tuve que escribir una opción '-i' :)
fuente
supercat
, podría modificar el script que publicó para generar un archivo de configuración temporal basado en los argumentos de la línea de comandos y luego llamarspc -c /path/to/your/temp/config
. Esto le permitiría especificar fácilmente diferentes colores para diferentes patrones en la línea de comando.Aquí hay un script de propósito general para colorear los patrones de expresiones regulares (probablemente necesite algunos retoques):
Nómbralo
hilite.sh
y úsalo de esta manera:fuente
community wiki
porque mi solución no funciona.$BIN
viaeval
en sustitución de comandos es probablemente frágil, engorroso y francamente peligroso. STDOUT es una secuencia y generalmente está destinado a ser procesado por herramientas similares a la secuencia. Intentar capturar una secuencia completa en una variable no es muy eficiente. Además,eval
es peligrosamente poderoso , así que solo úsalo si realmente sabes lo que estás haciendo.Incrustar cadenas arbitrarias (como
tput
salida) ensed
expresiones de reemplazo es problemático porque debe asegurarse (escapando) de que la cadena sea unased
sintaxis válida , lo que es más complejo y es mejor evitarlo. Yo usaría en suawk
lugar. Solo como un ejemplo:La clave es asignar las
tput
secuencias a lasawk
variables, hecho aquí usando las-v
opciones.fuente
awk
secuencia de comandos consta de un conjunto de bloques (las cosas entre el{}
en el nivel superior). Cada bloque está asociado con una condición: en mi publicación anterior no hay ninguno porque quiero actuar incondicionalmente en cada línea de entrada. Awk funciona leyendo registros de archivos o entradas estándar (en este caso es STDIN b / c no se proporcionaron nombres de archivos), y los compara con cada bloque en orden, ejecutando el bloque en el registro si la condición coincide.use printf:
p.ej.
el último
\n
agrega el carácter de nueva línea.para ver los posibles valores de probar algo como:
Además del color, puede agregar modificadores como negrita o subrayado o texto de color con fondo de color combinando los números. Para crear texto azul con fondo gris subrayado y marcado mediante el uso:
Salud,
/ B2S
fuente
Si está contento de instalar un script BASH y
ack
, elhhlighter
paquete tiene colores predeterminados útiles y una interfaz fácil https://github.com/paoloantinori/hhighlighter :Puede usarlo así para resaltar las filas que comienzan con
FAIL
:o que contienen
FAIL
:o para varias entradas de registro comunes:
Y, por supuesto, para un solo color (rojo) con grep simple:
La
^
partidos cada línea, pero es una matcher especial e imprime toda la línea. La expresión a resaltar se define después de a|
. Se pueden agregar más expresiones siempre que estén separadas por|
.fuente