Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

commande sed avec variable

3 réponses
Avatar
pascal
Bonjour,
j'ai un petit souci sur la commande sed, avec une variable:
voila, je souhaite dire a mon prog l endroit ou il se trouve, pour ensuite l
inclure dans mon prog.
le probleme, c est que quand je lance:
sed -e "s/$old/$new/g" monfichier >monnouveaufichier
sauf que comme ma variable $new est /home/applis, ma commande sed ne
comprend pas comment interpréter le deux\
pour le premier, je peux bien mettre dans mon script un \, mais pour le
second... comment faire...
pour info, mon prog fait :
pwd >fichier
new=`awk '{print $1}' fichier`
sed -e "s/$old/$new/g" fichier1`>fichierfinal

si qq a une idée
d'avance merci.
Pascal

3 réponses

Avatar
lhabert
"pascal" :

sed -e "s/$old/$new/g" monfichier >monnouveaufichier
sauf que comme ma variable $new est /home/applis, ma commande sed ne
comprend pas comment interpréter le deux


Le « / » n'a rien de canonique, c'est juste une convention. Tu peux mettre à
peu près n'importe quel autre caractère à la place. À toi d'en choisir un
qui ne risque pas de se retrouve dans $old ou $new.

Avatar
Vincent Bernat
OoO En cette fin de matinée radieuse du lundi 06 février 2006, vers
11:27, "pascal" disait:

Bonjour,
j'ai un petit souci sur la commande sed, avec une variable:
voila, je souhaite dire a mon prog l endroit ou il se trouve, pour ensuite l
inclure dans mon prog.
le probleme, c est que quand je lance:
sed -e "s/$old/$new/g" monfichier >monnouveaufichier
sauf que comme ma variable $new est /home/applis, ma commande sed ne
comprend pas comment interpréter le deux
pour le premier, je peux bien mettre dans mon script un , mais pour le
second... comment faire...
pour info, mon prog fait :
pwd >fichier
new=`awk '{print $1}' fichier`
sed -e "s/$old/$new/g" fichier1`>fichierfinal


Tu peux remplacer les / par d'autres caractères :
"s+$old+$new+g"

Bien sûr, il ne doit pas y avoir de + dans les variables.

Cette question n'est pas spécifique à Linux, aussi je mets le suivi
sur le groupe fr.comp.os.unix
--
I WILL NOT DEFAME NEW ORLEANS
I WILL NOT DEFAME NEW ORLEANS
I WILL NOT DEFAME NEW ORLEANS
-+- Bart Simpson on chalkboard in episode 9F01

Avatar
Sébastien Monbrun aka TiChou
Dans le message <news:ds78gp$56s$,
*Luc Habert* tapota sur f.c.o.l.configuration :

"pascal" :
sed -e "s/$old/$new/g" monfichier >monnouveaufichier
sauf que comme ma variable $new est /home/applis, ma commande sed ne
comprend pas comment interpréter le deux


Le « / » n'a rien de canonique, c'est juste une convention. Tu peux mettre
à peu près n'importe quel autre caractère à la place. À toi d'en choisir
un qui ne risque pas de se retrouve dans $old ou $new.


Sinon, si on n'a aucune idée des caractères que l'on risque de rencontrer
dans les variables, on peut, avant d'effectuer la substitution, modifier les
variables en échappant les slashs.

sed 's/'"${old/////}"'/'"${new/////}"'/g'

--
Sébastien Monbrun aka TiChou