je ne suis pas un spécialiste du shell, donc le reste est à prendre avec des pincettes :)
d'après le shebang, tu utilises bash
comme tu utilises le flag "/g" de sed, je suppose que tu veux remplacer toutes les occurrences et non pas seulement la première (même si dans ton cas précis ça ne change rien)
Deux petits détails, à mon avis :
sed n'est pas ce que tu cherches je pense, car il s'attend à avoir une regex et non une chaine de caractères basique (comme le fait remarquer biband)
Je suis aussi d’accord avec biband sur un autre point : tu as des soucis "d'échappement". Àmha bash, ou n'importe quel shell d'ailleurs, ne t'aide pas trop sur ce point.
Il faut noter que les doubles quotes (") et les simples quotes (') n'ont pas la même signification pour bash (cf. http://wiki.bash-hackers.org/syntax/quoting). Dans ton cas, tu aurais tout intérêt je pense à utiliser du strong quoting donc des simples quotes, pour éviter les problèmes liés au backslash, qui lui aussi a une signification spéciale.
Pour la substitution en elle-même, si on considère que sed n'est pas la solution, et que tu utilises bash, ce dernier te permet de faire une substitution basique (http://tldp.org/LDP/abs/html/string-manipulation.html - "Substring replacement")
Dernier point, je pense que le "exit" à la fin de ton script n'a pas d'effet particulier s'il n'y a plus de code derrière. Il n'est donc pas nécessaire dans ce cas.
Le script pourrait alors s'écrire :
#!/bin/bashstring1='c:\windows\toto'string2=rien
echo"remplace '$string1' par '$string2'"echo${string1//"$string1"/$string2}
# Autre approche, toujours avec bash
Posté par bernie . En réponse au message Problème avec les antislash et sed. Évalué à 4.
Salut Kangs,
je ne suis pas un spécialiste du shell, donc le reste est à prendre avec des pincettes :)
Deux petits détails, à mon avis :
Il faut noter que les doubles quotes (") et les simples quotes (') n'ont pas la même signification pour bash (cf. http://wiki.bash-hackers.org/syntax/quoting). Dans ton cas, tu aurais tout intérêt je pense à utiliser du strong quoting donc des simples quotes, pour éviter les problèmes liés au backslash, qui lui aussi a une signification spéciale.
Pour la substitution en elle-même, si on considère que sed n'est pas la solution, et que tu utilises bash, ce dernier te permet de faire une substitution basique (http://tldp.org/LDP/abs/html/string-manipulation.html - "Substring replacement")
Dernier point, je pense que le "exit" à la fin de ton script n'a pas d'effet particulier s'il n'y a plus de code derrière. Il n'est donc pas nécessaire dans ce cas.
Le script pourrait alors s'écrire :
Résultat :