shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Tutorial: Convertendo logs de Licq em logs de IRC


From: Fábio Olivé Leite
Subject: Tutorial: Convertendo logs de Licq em logs de IRC
Date: Tue, 29 Apr 2003 18:25:36 -0300
User-agent: KMail/1.4.3

Olá!

Agora de tarde tive a necessidade de enviar um log de umas conversas 
via Licq para uma lista, para efeito de difusão para os meus colegas 
de trabalho. Mas o log do Licq tem um formato pouco digerível, como o 
abaixo:

[ R | 0001 | 0260 | 0000 | 1051628311 ]
:buenas patrício.
[ S | 0001 | 0270 | 0000 | 1051628461 ]
:fala paisano, tranquilo?

Achei que seria legal convertê-lo para algo tipo uma conversa de IRC. 
O log acima não tem o nickname dos envolvidos, e a única diferença 
entre algo recebido ou enviado é o R ou S, que depois de centenas de 
linhas pode deixar as pessoas perdidas. Então fiz um awk script 
rapidinho, que transformou isso em:

<felipe> buenas patrício.
<olive> fala paisano, tranquilo?

Olhem que barbada:

awk '/^\[ S/ { quem = "<olive>" };
/^\[ R/ { quem = "<felipe>" };
/^:/ { print quem, substr($0, 2) }' felipe.txt

Claro que neste caso eu sabia que era uma conversa entre eu (<olive>) 
e o Felipe (<felipe>) e que o log estaria no felipe.txt. Como dá para 
perceber que depois de uma linha que começa por "[ S" vem texto que 
eu escrevi, neste caso eu coloco na variável "quem" o conteúdo 
"<olive>". O mesmo ocorre para linhas que começam por "[ R", pois só 
posso tê-las recebido (no caso do log do UIN do Felipe) do Felipe, 
então a variável "quem" recebe o valor "<felipe>".

Para as linhas de texto enviado ou recebido, que começam por ":", 
basta então imprimir o nome de quem escreveu (variável "quem") 
seguido do texto escrito (a linha atual, que fica em $0). Notem que 
uso o substr para retirar o ':', para ficar mais legível. O espaço em 
branco entre "quem" e o texto é inserido pelo próprio print do awk, 
ele sempre insere um espaço em branco entre seus parâmetros.

Bueno, é isso. Foi uma aplicação tão simples mas com um resultado tão 
visível que achei que seria legal mandar para a lista com uma boa 
explicação. Assim quem não conhece o awk vai percebendo suas 
características.

Abraços!

-- 
OpenBSD: Unix casca grossa -=- KNOW THYSHELL (that is, man ksh)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]