2011-06-30 13 views

Respuesta

26

Para obtener la salida de color de awk, puede usar este enfoque.

function red(s) { 
    printf "\033[1;31m" s "\033[0m " 
} 

function green(s) { 
    printf "\033[1;32m" s "\033[0m " 
} 

function blue(s) { 
    printf "\033[1;34m" s "\033[0m " 
} 

{ 
    print red($1), green($2), blue($3) 
} 
+0

muchas gracias, funciona muy bien – ThG

+0

@ThG contenta de haber podido ayudar :-) –

+7

tener cuidado con estas funciones. Están utilizando una cadena externa como el especificador de formato. Si la cadena contiene caracteres de formato (%, etc.), fallará. Es mejor usar algo como 'function red (string) { printf ("% s% s% s "," \ 033 [1; 31m ", string," \ 033 [0m "); } ' –

0

Una alternativa al uso de las funciones de awk es pasar los colores en las variables de la caparazón. P.ej.

RED='\033[01;31m' 
GREEN='\033[01;32m' 
YELLOW='\033[01;33m' 
BLUE='\033[01;34m' 

echo "Col1 Col2 Col3 Col4" | \ 
awk -v r=$RED -v y=$YELLOW -v g=$GREEN -v b=$BLUE -v n=$NONE \ 
'{printf r$1n y$2n g$3n b$4n "\n"}' 
Cuestiones relacionadas