colorize a primeira parte de cada linha

3

Eu tenho alguns registros de bate-papo como:

(15:12:56) rubo77: mist migration
(15:05:22) hans: ist hugo da?
(15:36:13) rubo77: test
(13:30:15) rubo77: what are the access data?
(15:06:38) [email protected]: user :  [email protected] (https://somewhere.de:8080/index.php#)
(15:06:38) [email protected]: password :  test

Como posso substituir isso usando sed para que os nomes de usuários fiquem em uma cor diferente?

Ou existe uma ferramenta mais simples que sed ?

    
por rubo77 10.06.2014 / 11:15

4 respostas

4

você pode usar isto:

sed 's/) \(.*\):/) \x1b[31m\x1b[0m:/'

por exemplo:

cat 1| sed 's/) \(.*\):/) \x1b[31m\x1b[0m:/'

VERSÃO 2:

COLOR=32
sed 's/) \(.*\):/) \x1b['${COLOR}'m\x1b[0m:/'

você pode alterar o número de cores

VERSÃO 3:

COLOR=32
sed 's/) \([[:alpha:][:digit:][:space:]@\.]*\):/) \x1b['${COLOR}'m\x1b[0m:/1'
    
por 10.06.2014 / 11:47
1

awk deve ser o mais simples:

awk '{$2="3[01;31m"$2"3[00m"; print $0}' logfile
    
por 10.06.2014 / 11:43
0

Você pode usar ccze para colorir a saída.

Não é otimizado para este caso, mas oferece muitos padrões bonitos.

    
por 22.04.2015 / 19:27
0

Bem, o que você quer fazer (colorir vários usuários) é possível, mas não é totalmente simples.

Você pode criar uma expressão sed muito longa (use ; ) que executa a ação solicitada; Isso é exatamente o que esse script de shell está fazendo para representar a atividade usada em um cluster: link
(a última seção das capturas de tela mostra uma instância do caso de uso descrito) A idéia é analisar o qtop.colormap, compilá-lo para uma expressão sed e usá-lo.

Ressalva: por causa do uso de scripts de shell e expressões profundas, a manutenção de software é muito ruim. Mas você certamente pode fazer isso.

    
por 10.06.2014 / 14:10