J'essaie de convertir un guillemet simple droit en apostrophe en utilisant tr .
tr "`echo -e '\xE2\x80\x99'`" "`echo -e '\x27'`" < a > b
étant donné un fichier encodé en UTF-8 appelé a qui contient cet exemple :
We're not a different species
“All alone?” Jeth mentioned.
OS X utilise le BSD tr et produit un joli résultat :
We're not a different species
“All alone?” Jeth mentioned.
Ubuntu utilise le GNU tr et produit ce mauvais résultat :
We'''re not a different species
''<9C>All alone?''<9D> Jeth mentioned.
Comment puis-je accomplir cette conversion dans Ubuntu ?
Réponse acceptée :
Vous pouvez essayer un autre outil, comme sed :
$ sed "s/’/'/g" <a
We're not a different species
“All alone?” Jeth mentioned.
Ou, puisque nous faisons une traduction simple, utilisez le y commande pour sed :
$ sed "y/’/'/" <a
We're not a different species
“All alone?” Jeth mentioned.
GNU tr ne fonctionne probablement pas parce que :
Actuellement
trne prend entièrement en charge que les caractères à un octet.
Finalement, il prendra en charge les caractères multi-octets ; quand c'est le cas, le-Cl'amènera à compléter le jeu de caractères, alors que-cl'amènera à compléter l'ensemble de valeurs. Cette distinction n'aura
d'importance que lorsque certaines valeurs ne sont pas des caractères, et cela n'est possible
que dans les paramètres régionaux utilisant des encodages multi-octets lorsque l'entrée contient
des erreurs d'encodage.
Et ’ est un caractère multioctet :
$ echo -n \' | wc -c
1
$ echo -n ’ | wc -c
3