[linux] Re: Strip ansi

Kees Theunissen theuniss op rijnh.nl
Ma Okt 24 06:44:20 CEST 2005


On Sun, 23 Oct 2005, Kees Theunissen wrote:

>Daar zitten toch nogal wat fouten in. Ruimt ook regelmatig te veel op.
>Deze is beter:
>
>sed -e 's/[[:cntrl:]]\[[;?[:digit:]]*.//g'  \
>    -e 's/[[:cntrl:]](B//g'   < panda.lst > panda.cleaned
>
>Maar het blijft een dirty aanpak. Eigenlijk moet je, zoals je ook vroeg,
>een programma hebben dat alle ANSI sequences precies kent.

Nee, vergeet het maar. Door escape-sequences er uit te slopen kan je
die file niet opschonen. Deze output van panda is zo ontzettend smerig.
Er wordt regelmatig output gegenereerd waarna de cursor opnieuw wordt
gepositioneerd en (een deel van) de voorgaande output vrolijk wordt
gewist of overschreven.

Voorbeeld: een 'hexdump -c' van twee regels uit die file:

0000000 033   [   3   7   m 033   [   4   0   m 033   [   3   7   m 033
0000010   [   4   0   m   /   h   o   m   e   /   v   i   r   u   s   /
0000020   c   o   l   l   e   c   t   i   o   n   /   T   r   i   v   i
0000030   a   l   .   3   5   .   g 033   [   3   7   m 033   [   4   0
0000040   m 033   [   m 033   (   B 033   [   3   7   m 033   [   4   0
0000050   m 033   [   3   7   m 033   [   4   0   m 033   [   6   1   ;
0000060   2   4   H 033   [   3   7   m 033   [   4   0   m 033   [   3
0000070   7   m 033   [   4   0   m   I   R   C   -   W   o   r   m   .
0000080   M   a   t   i   t   .   b 033   [   3   7   m 033   [   4   0
0000090   m 033   [   m 033   (   B 033   [   3   7   m 033   [   4   0
00000a0   m 033   [   3   7   m 033   [   4   0   m  \r  \n 033   [   3
00000b0   7   m 033   [   4   0   m 033   [   3   7   m 033   [   4   0
00000c0   m               F   o   u   n   d       v   i   r   u   s
00000d0   : 033   [   3   7   m 033   [   4   0   m 033   [   m 033   (
00000e0   B 033   [   3   7   m 033   [   4   0   m 033   [   3   7   m
00000f0 033   [   4   0   m 033   [   3   1   m 033   [   4   0   m 033
0000100   [   0   ;   1   m 033   (   B 033   [   3   1   m 033   [   4
0000110   0   m   W   o   r   m       G   e   n   e   r   i   c
0000120                         033   [   3   7   m 033   [   4   0   m
0000130 033   [   m 033   (   B 033   [   3   7   m 033   [   4   0   m
0000140 033   [   3   7   m 033   [   4   0   m  \r  \n


Als je hier de escape sequences uit sloopt krijg je:

/home/virus/collection/Trivial.35.gIRC-Worm.Matit.b
   Found virus :Worm Generic

Maar een 'cat' van diezelfde twee regels (met de escape sequences)
geeft op mijn scherm:

/home/virus/collection/IRC-Worm.Matit.b
   Found virus :Worm Generic

Waarbij dat "Worm Generic" in rood is weergegeven.

Ik denk dat mijn 'sed' constructie, zoals hierboven geciteerd, de
gebruikte escape sequences behoorlijk goed opruimt. Maar als je dit
soort bagger als input krijgt dan moet je meer doen; veeel meer.



Groeten,

Kees.

-- 
Kees Theunissen
F.O.M.-Instituut voor Plasmafysica "Rijnhuizen", Nieuwegein
E-mail: theuniss op rijnh.nl,     Tel: 030-6096724,     Fax: 030-6031204



More information about the Linux mailing list