Philippe B wrote:
>Bonjour tout le monde,
>
>je cherche à me perfectionner un peu en shell. J'aurais besoin de
>faire ce genre de manip :
>
>J'ai un fichier contenant des vhosts apache
>
><Virtualhost toto.com>
>
></Virtualhost>
>
><Virtualhost toto.com>
>
></Virtualhost>
>
><Virtualhost toto.com>
>
></Virtualhost>
>
>pensez vous que c'est possible avant chaque </Virtualhost> d'insérer
>un texte personnalisé ? est ce possible en bash ? ou y'a-t-il un
>langage prédestiné
>
>
>
>
Bonjour,
Ta question est un peu ambigus, si tu veux ajouter le meme texte devant
chaque "</Virtualhost>" alors tu peux utiliser SED comme ci-dessous.
/ctb@CTB:~$ *sed 's/<\/Virtualhost>/bla bla<\/Virtualhost>/g' virthost.txt *
<Virtualhost toto.com>
bla bla</Virtualhost>
<Virtualhost toto.com>
bla bla</Virtualhost>
<Virtualhost toto.com>
bla bla</Virtualhost>/
Tu peux biensur devier la sortie vers un fihier en ajoutant "> fichier"
(sans les ")...
Maintenant je doute que c'est ce que tu veux reellement faire. Je pense
que tu veux mettre des entrees differentes devant chaque "</Virtualhost>".
Dans ce cas, j'utiliserais cette methode (mais il y en a plein
d'autres...) :
/
/Change la 1 occurence :
/
ctb@CTB:~$ *listline=$(grep -n '</Virtualhost>' virthost.txt | cut -d
':' -f1);line=$(echo $listline | cut -d ' ' -f 1);sed "$line,$line i
toto" virthost.txt
*<Virtualhost toto.com>
toto
</Virtualhost>
<Virtualhost toto.com>
</Virtualhost>
<Virtualhost toto.com>
</Virtualhost>/
Change la 2 occurence :
/ctb@CTB:~$ *listline=$(grep -n '</Virtualhost>' virthost.txt | cut
-d ':' -f1);line=$(echo $listline | cut -d ' ' -f 2);sed "$line,$line i
toto" virthost.txt *
<Virtualhost toto.com>
</Virtualhost>
<Virtualhost toto.com>
toto
</Virtualhost>
<Virtualhost toto.com>
</Virtualhost>
//*listline=$(grep -n '</Virtualhost>' virthost.txt | cut -d ':' -f1)*/
--> cree la liste des numeros de lignes contenant "</Virtualhost>"
/*
line=$(echo $listline | cut -d ' ' -f 2)*/ --> selectionne le numero de
ligne de l'item 2 de la liste.
/*sed "$line,$line i toto"*/ --> hop isere avant la ligne de l'item 2 le
texte "toto".
Voila j'esperes que ca t'aidera...
Si tu veux plus d'explications n'hesites pas a m'envoyer un petit mail.
Cordialement
René