¿`nawk` "no funciona" con `make`? ¿Por qué?

¿`nawk` "no funciona" con `make`? ¿Por qué?

Tengo el siguiente alias:

alias mca_color='nawk '"'"'BEGIN { arr["Creating shared object"] = "1;31";} \
{ l = $0; for (pattern in arr) \
{ gsub(".*" pattern ".*", "\033[" arr[pattern] "m&\033[0m", l); } print l; }'"'"

Utilizo alias similares para colorear otras salidas (usando más patrones, pero esto es sólo por ejemplo).

Entonces, este alias funciona si lo uso como:

$ echo "-ne Creating shared object test.so ..." | mca_color

está echoimpreso en rojo.PERO, cuando intento:

$ make | mca_color

e incluso

$ make 2>&1 | mca_color

el resultado esnocoloreado (y sí, make"imprime" el mismo texto al final de su ejecución).

¿Algunas ideas?


Pensé que podría haber algo con procesos secundarios o algo así, pero obviamente la tubería funciona: lo probé con grep, intenté redirigir la salida a un archivo, todo funciona.

Incluso esto no funciona (el texto está impreso, pero no coloreado):

$ make 2>&1 | grep 'a' | mca_color

Respuesta1

Finalmente lo descubrí, casi accidentalmente.

Parecía que había otro alias make='colormake'y colormakees un guión que contiene:

/usr/bin/make "$@" 2>&1 | /usr/share/colormake/colormake.pl/usr/bin/make "$@" 2>&1 | /usr/share/colormake/colormake.pl

lo que explica mucho. Quitar el aliasfor colormakesolucionó el "problema".

información relacionada