domingo, 14 de octubre de 2012

Colorear unha expresión regular [Twitcode XI][Bash]

A seguinte función en bash toma un parámetro e colorea o que recebe pola entrada estándar segúndo esa expresión regular.

colorize () { sed "s/$1/\x1b[1;91m&\x1b[0m/g"; }

Tira do programa `sed` para substituir o parámetro por `\x1b[1;91m` (símbolo que advirte a consola que coloree de vermello o que segue), `&` (a cadéa orixinal), e `\x1b[0m` (fin da coloración).


Nota: o carácter `\x1b` (1B hexadecimal, 27 decimal) refírese o ESCAPE de toda a vida ;)

Por exemplo, dandolle color os `section` dun anaco de código:

Por suposto o color pódese cambiar, se queremos ver outros colores (cambiando o código de dentro do [X;XXm ) podemos facer:
for ((i=0;i<7;i++));do
    echo -e "\x1b[0;9"$i"m9"$i"\x1b[0m"
done

Ou se queremos toda-las posibilidades:
for ((i=0;i<10;i++));do
    echo $i
    for ((j=0;j<10;j++));do
        for ((k=0;k<10;k++));do 
            echo -en "\x1b[$i;"$j$k"m$j$k\x1b[0m "
        done
        echo ""
    done
    echo -e "\n------\n"
done

Produciría unha saída tal que así:


Saúdos, espero que vos resulte tan útil coma a min :)

No hay comentarios:

Publicar un comentario