2010-11-30 5 views
0

im essayant la commande sed suivante, mais je n'ai pas de chance avec les caractères spéciaux:omble sed et spécial

echo "x#asdf" | sed "s/\([^-]\)#/\1\n/g" 

x 
asdf 

mais si j'utilise un certain caractère spécial dans test.txt

echo "ä#asdf" | sed "s/\([^-]\)#/\1\n/g" 

ä#asdf 

pourquoi?

cela fonctionne:

echo "ü#asdf" | sed "s/ü/-/g" 
-#asdf 

mais cela ne marche pas:

echo "ü#asdf" | sed "s/[ü]/-/g" 
ü#asdf 
+1

Fonctionne bien ici. Il n'y a rien de mal avec votre script sed, doit être lié à votre locale/encodage de fichier. – chris

+0

J'ai l'environnement local suivant: 'de_DE.UTF-8' – gert

+1

Cela fonctionne pour moi dans GNU sed version 4.2.1 dans en_US.UTF-8 et de_DE.UTF-8. Quelle version de 'sed' est la vôtre? –

Répondre

0

Je ne suis pas sûr à ce sujet, parce que vos commandes sed fonctionnent ok pour moi (gnu sed 4.1.5), mais essayez d'appeler sed cette façon:

$ LANG=de_DE.UTF-8 sed ... 

Voir cet article pour plus d'informations: Why does sed fail with International characters and how to fix?.

Si cela ne fonctionne pas, il peut être utile de mettre à niveau vers gnu sed 4.2, si vous le pouvez. Le fichier NEWS dit "traitement multi-octets fixe" pour 4.2 mais ne va pas dans plus de détails.