• # Quotes autour de la variable

    Posté par . En réponse au message Problème avec les antislash et sed. Évalué à 2.

    Salut,

    Il te faut "quoter" ta variable.

    Dans la première partie du sed s/$string1/ c'est une expression rationnelle et le $ est interprété comme une fin de ligne puis string1 est une chaine de caractères interprétée tel quel qui suit la fin de ligne.
    Dans la deuxième partie du sed /$string2/g $string2 est interprétée comme une chaine de caractères.

    Je ne sais pas si on peut remplacer facilement la première partie par une variable du shell. J'en doute car on attend ici une regex. J'ai donc utilisé '\' pour l'exemple, l'idée étant de remplacer l'anti-slash (doublé car \ est un caractère d'échappement).

    Pour la seconde partie c'est plus simple (note les quotes autour de $str) :

    str='|'
    string1='c:\windows\toto'
    echo "$string1" | sed -e 's/\\/'$str'/g'
    c:|windows|toto

    A+