Re: Sed et suppression de bloc

Top Page

Reply to this message
Author: Gilles Crèvecœur
Date:  
To: guilde
Subject: Re: Sed et suppression de bloc
On Fri, Dec 23, 2011 at 10:45:16AM +0100, Dominique Fournier wrote:
> Bonjour à tous,
>
> Je cherche un moyen de supprimer un bloc de manière automatique d'un
> fichier de conf de proftpd.
> Exemple de conf :
> Plein de lignes à garder
> <IfUser BLa>
>   <Limit LOGIN>
>     Allow 1.2.3.4 5.6.7.8...
>     DenyAll
>   </Limit>
> </IfUser>
> Plein de lignes à garder :

>
> Je pense le faire avec sed mais je ne m'en sors pas. Je connais le
> début du bloc (<IfUser BLa>) et la fin du bloc (le premier </IfUser>
> après le début du bloc).
>
> J'ai trouvé une doc
> http://docstore.mik.ua/orelly/unix/sedawk/ch06_01.htm mais c'est
> incompréhensible pour moi.


Très bonne documentation.

> Des idées ?

Je ne sais pas le faire en sed, par contre avec awk, c'est assez simple.
Le script suivant semble faire l'affaire, aprés un test succint.
script.awk :

#! /usr/bin/awk
BEGIN { trouve=0 }
/<IfUser BLa>/ { trouve=1 }
trouve == 0 { print $0 }
/<\/IfUser>/ { trouve = 0 }

## fin de script.awk

Pour l'utiliser tu lances le script comme suit :
    $ awk -f script.awk -- "<fichier_a_traiter>" >"nouveau-fichier"


Ensuite il te reste à remplacer l'ancien par le nouveau. Il faut quand
même penser à faire une sauvegarde du fichier avant l'opération.

--
Gilles