Envoyé par
Flodelarab
:oops: Désolé de jouer les rabat-joie, mais il faut toujours se souvenir que cette considération des caractères, octet par octet, se marie très mal avec les caractères unicode un peu poussé. Exemple : ☢
ord () { for ((i=0; i<${#1}; i++)); do printf '\\x%x' "'${1:$i:1}"; done; }
x1="X/;E"
X1=$(ord "$x1")
x2="☢Y,:F"
X2=$(ord "$x2")
echo "fooX/;Ebar" | sed -e "s/$X1/$X2/"
donne
foo&22Y,:Fbar
Le code de ☢ est 2622.
Or \x26 est l'esperluette.
Vous voyez le problème.
PS: la balise "code" défigure les caractères unicode.