OVH Cloud OVH Cloud

[debutant] echappement avec sed

10 réponses
Avatar
julien.gautier
bonjour,


je voudrais que sed me remplace les "' " (simple quote), par un "a" par
ex.

mais ceci ne marche pas :

echo "ee'ee" | sed -e 's/\'/a/g'

Comment faire pour échapper la simple quote ?

Merci d'avance.

10 réponses

Avatar
JoyJoy
bonjour,

je voudrais que sed me remplace les "' " (simple quote), par un "a" par
ex.

mais ceci ne marche pas :

echo "ee'ee" | sed -e 's/'/a/g'

Comment faire pour échapper la simple quote ?

Merci d'avance.


Bonjour,

ceci devrait marcher : echo "ee'ee" | sed "s/'/a/g"

--
JoyJoy
La vitesse de la lumiere etant superieure a celle du son, il arrive
souvent qu'une personne paraisse brillante jusqu'a ce qu'elle ouvre sa
gueule ...

Avatar
TiChou
Dans le message <news:1ggik43.33nudh1efmfb6N%,
*Julien Gautier* tapota sur f.c.o.unix :

bonjour,


Bonjour,

je voudrais que sed me remplace les "' " (simple quote), par un "a" par
ex.

mais ceci ne marche pas :

echo "ee'ee" | sed -e 's/'/a/g'

Comment faire pour échapper la simple quote ?


sed -e 's/'"'"'/a/g'

ou bien

sed -e "s/'/a/g"

Merci d'avance.


De rien.

--
TiChou

Avatar
Laurent Wacrenier
Julien Gautier écrit:
mais ceci ne marche pas :

echo "ee'ee" | sed -e 's/'/a/g'

Comment faire pour échapper la simple quote ?


On ne fait pas, il faut finir la chaîne.

sed -e 's/'''/a/g'

mais
sed -e s/'/a/g
suffit.

Avatar
julien.gautier
JoyJoy wrote:

bonjour,

je voudrais que sed me remplace les "' " (simple quote), par un "a" par
ex.

mais ceci ne marche pas :

echo "ee'ee" | sed -e 's/'/a/g'

Comment faire pour échapper la simple quote ?

Merci d'avance.


Bonjour,

ceci devrait marcher : echo "ee'ee" | sed "s/'/a/g"



Merci bcp : j'aurais d'ailleurs pu y penser tout seul...


Avatar
julien.gautier
"TiChou" wrote:

Comment faire pour échapper la simple quote ?


sed -e "s/'/a/g"


ça j'aurais pu y penser... Désolé !

ou bien

sed -e 's/'"'"'/a/g'


ça par contre, je ne comprend pas trop...


Avatar
julien.gautier
Laurent Wacrenier wrote:

Julien Gautier écrit:
mais ceci ne marche pas :

echo "ee'ee" | sed -e 's/'/a/g'

Comment faire pour échapper la simple quote ?


On ne fait pas, il faut finir la chaîne.

sed -e 's/'''/a/g'

mais
sed -e s/'/a/g
suffit.



ok merci.


Avatar
JustMe
Julien Gautier wrote:

"TiChou" wrote:


Comment faire pour échapper la simple quote ?


sed -e "s/'/a/g"



ça j'aurais pu y penser... Désolé !


ou bien



sed -e 's/'"'"'/a/g'



ça par contre, je ne comprend pas trop...


concaténation de 's/' avec "'" et '/a/g'

Ceci dit faites gaffe : sed est un logiciel libre et les échappement
libres c'est pas terrible...

ok => []



Avatar
TiChou
Dans le message <news:1ggiy79.n8a8z91hkvxa8N%,
*Julien Gautier* tapota sur f.c.o.unix :

sed -e 's/'"'"'/a/g'


ça par contre, je ne comprend pas trop...


C'est la même solution que Laurent Wacrenier mais moins « propre ». Au lieu
d'échaper on quote.

--
TiChou


Avatar
Stephane Chazelas
2004-07-7, 00:11(+02), TiChou:
Dans le message <news:1ggiy79.n8a8z91hkvxa8N%,
*Julien Gautier* tapota sur f.c.o.unix :

sed -e 's/'"'"'/a/g'


ça par contre, je ne comprend pas trop...


C'est la même solution que Laurent Wacrenier mais moins « propre ». Au lieu
d'échaper on quote.
[...]


Notez que c'est un probleme de shell, pas de sed. Pour sed,
« ' » n'est en rien special. Dans tous les cas cites, le 4e
argument de sed est la chaine de caracteres composees des 7
caracteres s, /, ', /, a, / et g.

On utilise par habitudes des single quotes pour les scripts sed
parce que ces derniers contiennent souvent des caracteres
speciaux pour le shell (, $, *...) et que la single quote est
la quote la plus forte du shell (tellement forte qu'il n'y a
aucun moyen d'y faire figurer une single quote elle-meme, d'ou
la question et d'ou la reponse qui consiste a d'abord sortir des
single quotes pour en inserer une par un autre moyen
d'echappement).

--
Stephane



Avatar
julien.gautier
Stephane Chazelas wrote:

2004-07-7, 00:11(+02), TiChou:
Dans le message <news:1ggiy79.n8a8z91hkvxa8N%,
*Julien Gautier* tapota sur f.c.o.unix :

sed -e 's/'"'"'/a/g'


ça par contre, je ne comprend pas trop...


C'est la même solution que Laurent Wacrenier mais moins « propre ». Au lieu
d'échaper on quote.
[...]


Notez que c'est un probleme de shell, pas de sed. Pour sed,
« ' » n'est en rien special. Dans tous les cas cites, le 4e
argument de sed est la chaine de caracteres composees des 7
caracteres s, /, ', /, a, / et g.

On utilise par habitudes des single quotes pour les scripts sed
parce que ces derniers contiennent souvent des caracteres
speciaux pour le shell (, $, *...) et que la single quote est
la quote la plus forte du shell (tellement forte qu'il n'y a
aucun moyen d'y faire figurer une single quote elle-meme, d'ou
la question et d'ou la reponse qui consiste a d'abord sortir des
single quotes pour en inserer une par un autre moyen
d'echappement).



ok, merci pour ce complément très clair.