#1 Le 22/02/2007, à 16:35
- Fredo92
[Résolu][Shell] Modifier par script certaines chaines d'un fichier
Bonjour à tous,
J'essaye de faire un petit script qui me permet de remplacer certaines chaines de caractère par des variables que je passe à mon script.
voici le code:
Code :
#!/bin/sh sed -e 's/[^ ]*$$nom$$[^ ]*/'$1'/g' cfg_template.cfg>$1_temp.cfg sed -e 's/[^ ]*$$masource$$[^ ]*/'$2'/g' $1_temp.cfg>$1.cfg rm $1_temp.cfg
le but est de remplacer $$nom$$ par la valeur de ma variable $1
et de remplacer $$masource$ par la valeur de $2
cela fonctionne presque, car au lieu de me remplacer juste $$nom$$ ou $$masource$$ par les variables, cela me remplace toute la ligne.
Ou est le probème ? je n'arrive pas à voire.
Merci
#2 Le 22/02/2007, à 16:49
- Fredo92
Re : [Résolu][Shell] Modifier par script certaines chaines d'un fichier
#!/bin/sh
sed -e 's/[^ ]*$$nom$$[^ ]*/'$1'/g' cfg_template.cfg>$1_temp.cfg
sed -e 's/[^ ]*$$masource$$[^ ]*/'$2'/g' $1_temp.cfg>$1.cfg
rm $1_temp.cfg
#3 Le 22/02/2007, à 17:02
- lut!n
Re : [Résolu][Shell] Modifier par script certaines chaines d'un fichier
#!/bin/sh
sed -e 's/$$nom$$/'$1'/g' cfg_template.cfg | sed -e 's/$$masource$$/'$2'/g' > $1.cfg
devrait suffire . Le probleme est que tu selectionnes toutes la ligne au lieu de juste la section a remplacer, ce qui a pour effet de remplacer toute la ligne
(ps: si le script ne fait que ca, pour une ligne il serait peut-etre plus pratique de créer un alias bash, mais ca se discute )
Hors ligne
#4 Le 22/02/2007, à 17:31
- Fredo92
Re : [Résolu][Shell] Modifier par script certaines chaines d'un fichier
merci pour ta reponse.
Mais j'obtient exactement le meme resultat, cad que ca me remplace la ligne entière au lieu de la chaine.
Le problème pourrait il venir du fait que par exemple la chaine $$nom$$ ce trouve elle meme dans une chaine ?
ex: aaaaaaaaaaaaaaa$$nom$$aaaaaaaaaaaa
#5 Le 22/02/2007, à 17:40
- lut!n
Re : [Résolu][Shell] Modifier par script certaines chaines d'un fichier
en fait, meme pas besoin du -e,
#!/bin/sh
sed "s/\$\$nom\$\$/$1/g" cfg_template.cfg | sed "s/\$\$masource\$\$/$2/g" > $1.cfg
devrait marcher sans remplacer toute la ligne. (echapper les caracteres speciaux c'est plus sur)
Hors ligne
#6 Le 22/02/2007, à 17:57
- Fredo92
Re : [Résolu][Shell] Modifier par script certaines chaines d'un fichier
j'ai reussi merci pour ton aide.
sed '1,$s/$$NOM$$/'$1'/g' cfg_template.cfg | sed '1,$s/$$SOURCE$$/'$2'/g' > $1.cfg