Author: Frédéric BOITEUX Date: To: guilde Subject: Re: regexp
Le Fri, 21 Nov 2003 19:04:22 +0100, Benoit T <glo@???> a écrit :
>
> bonjour,
>
>
> petit problème de construction d'expression regulière :
>
> j'un fichier qui contient des logs de connexions, je veux supprimer les
> lignes concernant les connexions locales.
>
> le fichier ressemble à ça :
>
> Nov 16 09:18:21 port 49006 UDP datagram from 212.21.255.76
> Nov 16 09:19:04 last message repeated 4 time(s)
> Nov 16 09:19:04 netbios-ns UDP datagram from 192.168.2.23
> Nov 16 09:19:12 last message repeated 19 time(s)
> Nov 16 09:37:02 netbios-ns UDP datagram from 195.251.9.141
> Nov 16 09:37:16 last message repeated 1 time(s)
>
> il s'agit de supprimer toutes les lignes contenant "192.168.2.", et
> éventuellement celles qui les suivent immédiatement et qui
> contiennent "last message". j'ai beaucoup cherché avec grep, sans
> résultat.
>
> notamment :
> egrep -z "192\.168\.2\.2[23](\n... .. ........ last message repeated [:digit:]+ time\(s\))?"
>
>
> quelqu'un saurait-il le faire, même en sed ou en perl ?
en awk peut-être :
awk '
/192\.168\.2\./ { trouve=1; next ;}
/last message/ { if (trouve == 1) { trouve = 0; next;} }
{ trouve = 0 ; print}
' <fichier>