Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/02/2007, 15h45   #1
Membre régulier
 
Inscription : décembre 2003
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 90
Points : 72
Points : 72
Par défaut Modfier par script certaine chaine 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 :
1
2
3
4
5
6
7
 
#!/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
uraxyd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 17h38   #2
Membre régulier
 
Inscription : décembre 2003
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 90
Points : 72
Points : 72
j'ai essayé avec cette commande:

Code :
sed -e 's/$$nom$$/'$1'/g' cfg_template.cfg | sed -e 's/$$masource$$/'$2'/g' > $1.cfg
et j'obtient le meme resultat, cad que ca me remplace la ligne au lieux de la chaine.

De plus cela pourrait il venir du fait que par exemple la chaine $$nom$$ ce trouve elle meme dans une chaine ?
ex: aaaaaaaaaaaaaaa$$nom$$aaaaaaaaaaaa


Merci
uraxyd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 17h45   #3
Invité de passage
 
Inscription : février 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 2
Points : 1
Points : 1
substitution de mots dans un fichier (commande perl) :
"perl -pi.bak -e 's/xxx/yyy/g' liste de fichiers"
options :
p pour faire une boucle sur les lignes du fichier -
i pour le fichier de svg (ici .bak) -
e pour execute -
/g si plusieurs occurences par ligne )

ou
sed '1,$s/mot-a-remplacer/mot-desire/g' fichier > nouveau-fichier

a priori je vois pas pourquoi il faut mettre $$ avant et apres la variable

personnellement j'aime presque mieux la commande perl qui me remplace dans le fichier d'origine avec une sauvegarde possible.
meuleu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 17h55   #4
Membre régulier
 
Inscription : décembre 2003
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 90
Points : 72
Points : 72
ca fonctionne.
merci!
uraxyd est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h13.


 
 
 
 
Partenaires

Hébergement Web