Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/02/2007, à 17: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, à 17: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, à 18: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 smile. 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 wink

(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 smile)

Hors ligne

#4 Le 22/02/2007, à 18: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, à 18: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, à 18: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