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