Re: Scripting etc..

トップ ページ

このメッセージに返信
著者: CTB
日付:  
To: Philippe B
CC: guilde
題目: Re: Scripting etc..
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é