Sed para o resgate!
Você pode melhorar isso (já que realmente precisa), mas funciona muito bem.
$ cat >~/bin/hilight <<EOF
#!/bin/bash
while [ $# -gt 0 ]
do
COMANDO=$COMANDO's/'$1$'/3[01;'$2$'m3[K\03[m3[K/g\n'
shift;shift;
done
sed -e "$COMANDO"
EOF
Por uma questão de simplicidade, o hilight aceita um par de argumentos (primeiro a correspondência, segundo a cor). Neste script, o atributo é sempre em negrito
Leia man console_codes (Graphic Rendition) para ver as secuências de escape de cores ou tente isto
for attrib in $(seq 0 12); do
for color in $(seq 30 37) $(seq 40 47) $(seq 90 97); do
printf %b " $attrib $color:3[$attrib;${color}mhi, dudes3[m"
done
done
Tem desvantagens importantes ao usar esse trabalho:
$ dmesg | hilight \[ 34 ] 34
mas isso não é de todo:
$ dmesg | hilight \[ 34 ] 34 [[:digit:]] 31
porque [: digit:] encontra os números nas secuências de escape em versões anteriores.
Algo como:
$ cat /var/log/kern.log | hilight kernel 31 a 34 et 33
funcionará sempre como exceção.
Usando o comando time, eu encontrei este incremento em quatro o tempo decorrido, o que não é muito.
Você pode substituir o comando sed por qualquer outro analisador que você goste ou se adapte às suas necessidades (awk, etc ...)