[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: