Remplacer une chaine de caractère avec sed. - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 23-09-2008 à 20:12:40
Et qu'est ce qu'il y a de compliqué ?
C'est une substitution simple de sed. As tu pris le temps de lire le manpage (man sed) et de faire quelque tests sans boucle for afin de comprendre le fonctionnement de sed ?
Au pire consulte la page : http://fr.wikipedia.org/wiki/Sed_(informatique)
C'est écrit texto dedans
Spoiler : ce n'est pas t'aider mais : |
Marsh Posté le 23-09-2008 à 20:17:01
La gestion de la variable sous sed ne fonctionne pas.
J'ai parcouru le web de long en large et je n'ai pas trouvé de cas de figure utilisant une variable comme substitution.
cat $i | sed 's/toto/'titi'/g'; --> fonctionne mais je ne sais pas comment intégrer ma variable.
Marsh Posté le 23-09-2008 à 20:20:25
Je n'ai pas dû comprendre ta problématique
|
Marsh Posté le 23-09-2008 à 20:25:37
J'avais bien essayé cela :
Code :
|
mais cela me retourne cette erreur à chaque passage dans la boucle :
sed: -e expression n°1, caractère 9: option inconnue pour `s'
Marsh Posté le 23-09-2008 à 20:31:59
le $i vaudra test.conf quand tu l'appelle dans ta substitution, donc c'est sûr, tu n'obtiendras pas ce que tu attends.
Marsh Posté le 23-09-2008 à 20:34:54
Oui, toto sera remplacé par test.conf si cela fonctionne. Ce n'est pour le moment par important. Or cela ne fonctionne pas.
Marsh Posté le 23-09-2008 à 20:39:38
> rm test.conf |
Marsh Posté le 23-09-2008 à 20:41:20
Et sans le cut ca fonctionne très bien aussi
> rm test.conf |
Marsh Posté le 23-09-2008 à 20:42:25
Ils ont quels nom précisément test fichiers dans /tmp ?
Marsh Posté le 23-09-2008 à 20:46:44
J'ai des fichiers de config : aa.vonf, bb.conf, cc.conf.
Ils ont tous le même contenu. Je veux juste changer le mot toto contenu sur la première ligne.
Ma première ligne :
LogFile /var/log/toto
Marsh Posté le 23-09-2008 à 20:48:39
Je viens d'essayer ton script (copier/coller) ca fonctionne aussi
Marsh Posté le 23-09-2008 à 20:50:08
Ah, je suis con, c'est les /
Marsh Posté le 23-09-2008 à 20:54:38
sneakz a écrit : Comment dois-je les traiter ? |
En les remplacant dans sed par autre chose
#!/bin/sh |
Marsh Posté le 23-09-2008 à 21:00:39
Tu es trop fort !! un grand merci.
As-tu un lien, une doc à me suggerer où je pourrai apprendre à utiliser sed ?
Marsh Posté le 23-09-2008 à 21:03:27
J'ai ces deux liens, en anglais :
http://sed.sourceforge.net/
http://www.grymoire.com/Unix/Sed.
Marsh Posté le 24-09-2008 à 12:39:38
Pourquoi utiliser sed pour modifier un fichier, alors que ed est fait pour ça ?
Marsh Posté le 23-09-2008 à 20:05:40
Bonsoir,
J'essaye en vain de remplacer une chaine de caractère par la valeur d'une variable en utilisant sed.
Je boucle sur plusieurs fichiers de config et ensuite je voudrais remplacer le mot toto apparaissant dans ces fichiers de config par le nom du fichier.
#!/bin/sh
for i in /tmp/*.conf;
do
sed ...
done
Par exemple, si je boucle sur le fichier test.conf, j'aimerais que toto soit remplacer par test.
Merci pour votre aide.
Message édité par sneakz le 23-09-2008 à 20:06:00