Re: [shell]supprimer un bloc de texte
Bonjour,
Marc Chantreux a écrit, jeudi 25 octobre 2007, à 07:53 :
> On Thu, Oct 25, 2007 at 03:50:55AM +0200, dexinou wrote:
> > cat /root/vhost.conf | grep $USER
> >
> > sed -i '/<VirtualHost/{:a; N; /<\/VirtualHost/!ba; /'$USER'\.domaine.com/d
> > }' /root/vhost.conf
Heu, domain.com != domaine.com ?
> sed -i c'est un poil dangeureux pour de la config. je conseille de faire
> un cp qqpart.
oui, ou « -i.bak »
> sed -i '/MotifA/,/MotifB/d' pourrait t'aider.
Pas tellement, il faut détruire le bloc complet quand une ligne
intermédiaire correspond ; par ailleurs, $USER peut figurer à la fin
d'un autre nom, comme jean-paul.domain et paul.domain...
sed -i .bak -e '
/<VirtualHost\>/{
:A;N;/<\/VirtualHost\>/!bA
/[[:space:]]'"$USER"'\.domain\.com\>/d
}' vhost.conf
(on suppose que les deux lignes Virtualhost sont distinctes).
Éventuellement, on pourrait épargner des blocs commentés, etc.
sed -i .bak -e '
/^[[:space:]]*<VirtualHost\>/{
:A;N;/^[[:space:]]*<\/VirtualHost\>/!bA
/[[:space:]]*ServerName[[:space:]]\+'"$USER"'\.domain\.com\>/d
}' vhost.conf
--
Jacques L'helgoualc'h
Reply to: