#1 Le 17/03/2012, à 23:32
- arieugon
[RESOLU] sed : substitution avec des variables ne fonctionne pas
Bonjour à tous
Dans un script je veux substituer une valeur par une autre dans un fichier. Chacune est contenue dans une variable respective. Le problème est qu'elle ne sont pas substituées par la commande sed.
exemple:
#!/bin/bash
chaineA=AAA
chaineB=BBB
sed 's/$chaineA/$chaineB/g' fichier # les variables ne sont pas substituées par leur valeur.
Il cherche à remplacer la chaîne '$chaineA' par '$chaineB au lieu de 'AAA' par 'BBB'.
Merci de votre aide:)
Dernière modification par arieugon (Le 18/03/2012, à 13:17)
Portable ASUS K73E : Ubuntu XFCE 20.04 / Ubuntu DDE 20.04 / Debian 10 /Debian 11 (testing) / Devuan 3
Le tout en multi-boot Grub Legacy.
Hors ligne
#2 Le 17/03/2012, à 23:37
- sputnick
Re : [RESOLU] sed : substitution avec des variables ne fonctionne pas
Normal, c'est le ba-ba du shell, entre des simples quotes, les variables ne sont pas interpollées.
sed "s/$var1/$var2/"
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#3 Le 18/03/2012, à 01:49
- Bousky
Re : [RESOLU] sed : substitution avec des variables ne fonctionne pas
sed "s/$var1/$var2/"
Il y a un autre problème avec cette écriture : si l'une des deux variables contient « / », sed va renvoyer une erreur. Si l'une des deux variables risque de contenir « / », il faut choisir un autre délimiteur dont tu es sûr qu'il ne soit pas présent dans les variables (j'utilise généralement « | » avec les fichiers : sed "s|…|…|").
Dernière modification par Bousky (Le 18/03/2012, à 01:49)
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne
#4 Le 18/03/2012, à 13:17
- arieugon
Re : [RESOLU] sed : substitution avec des variables ne fonctionne pas
Ok merci à vous deux. Je pensais que les simples cotes étaient obligatoires. Ça fonctionne. J'étais étonné que sed ne puisse pas accepter de variables !!! Merci encore.
Linuxement
Portable ASUS K73E : Ubuntu XFCE 20.04 / Ubuntu DDE 20.04 / Debian 10 /Debian 11 (testing) / Devuan 3
Le tout en multi-boot Grub Legacy.
Hors ligne