GNU sed (pour Windows) peut-il gérer Unicode? Si c'est le cas, s'agit-il d'un problème de page de code / locale ou d'un commutateur?

10

J'utilise GNU SED de temps en temps depuis quelques années maintenant. Cela me fait tourner un peu parfois, mais ça fait du bon travail ... pour les jeux de caractères à un octet!
De temps en temps, je remarque des références à GNU SED étant Unicode, mais le plus proche que j'aie vu est son mode "binaire" .. et binaire n'est pas Unicode.
GSED peut-il traiter un fichier texte Unicode à la résolution CodePoint, y compris et surtout \ r \ n (Windows) ... et si c'est le cas, attend-il UTF-8, UTF-16, ou quoi? et comment SED détecte-t-il l'encodage?

Peter.O
la source
1
Unicode est généralement spécifié avec l'option \ uXXXX. Essayez la compilation de ce gars japanease sky.geocities.jp/hp_gabo200x/room_tool.html
Mikhail

Réponses:

1

Je ne connais pas grand-chose à propos de sed, mais après quelques recherches sur Google, il semble avoir un support pour une variété de pages de codes via la variable d'environnement LANG. Je crois que l'UTF-8 est en fait la valeur par défaut en l'absence de LANG. Je ne sais pas comment le port Windows est configuré cependant. J'ai une forte suspicion que sed n'effectue aucun traitement de détection du tout sur le flux d'entrée.

Sources: /programming/67410/why-does-sed-fail-with-international-characters-and-how-to-fix http://omgili.com/mailinglist/cygwin/cygwin/com /20100520123926GA1432onderneming10xs4allnl.html

Vous pouvez également essayer les caractères d'échappement comme mentionné ici: http://forums.whirlpool.net.au/forum-replies-archive.cfm/841095.html Cela semble cependant très lourd.

Vanessa Phipps
la source
@Mathew: Merci. Il semble que le problème ne soit pas lié à SED.exe lui-même, mais à la manière dont Windows ne gère pas très bien les pages de codes dans sa console cmd.exe. Peut-être que cela fonctionne dans son PowerShell, mais si je dois y aller, je préfère me concentrer sur Python à la place. Pour autant que je puisse voir, la fierté et la joie de Windows, UTF-16 (page de codes 1200, msdn.microsoft.com/en-us/library/dd317756%28VS.85%29.aspx ) n'est disponible que pour les applications gérées , quoi que cela signifie, mais cela ne fonctionne sûrement pas dans la console .. Convertir en UTF-8 et inversement? En aucune façon! Python ici je viens. (ou 'Nix and Bash)
Peter.O
Ça me semble bien. Je suis un peu confus sur la façon dont cmd.exe provoque le problème et comment Python le résout (en plus des pouvoirs magiques bien connus de Python ( xkcd.com/353 )), mais je ne vais pas prétendre comprendre les caprices de cmd.exe. Bonne chance à toi!
Vanessa Phipps
@fred: Lire: .NET.
Hello71
2
J'ai résolu le problème ... J'ai complètement abandonné MS il y a environ 6 mois, et maintenant j'utilise Ubuntu .. Il est aussi lisse que la soie ... (et je ne regarde pas en arrière ...
Peter.O