Kann GNU sed (für Windows) mit Unicode umgehen? Wenn ja, handelt es sich um ein Problem mit der Codepage / dem Gebietsschema oder um einen Wechsel?

10

Ich benutze GNU SED seit ein paar Jahren ein und aus. Es bringt mich manchmal ein bisschen durcheinander, aber es macht einen guten Job ... für Einzelbyte-Zeichensätze!
Hin und wieder stelle ich fest, dass GNU SED Unicode-fähig ist, aber das, was ich am nächsten gesehen habe, ist der "binäre" Modus. Und binär ist kein Unicode.
Kann GSED eine Unicode-Textdatei mit CodePoint-Auflösung verarbeiten, einschließlich und insbesondere \ r \ n (Windows) ... und wenn möglich, erwartet es UTF-8, UTF-16 oder was? und wie erkennt SED die Kodierung?

Peter.O
quelle
1
Normalerweise wird Unicode mit der Option \ uXXXX angegeben. Versuchen Sie, diesen Japanease-Typ zu kompilieren sky.geocities.jp/hp_gabo200x/room_tool.html
Mikhail

Antworten:

1

Ich weiß nicht viel über sed, aber nach einigem harten Googeln scheint es Unterstützung für eine Vielzahl von Codepages durch die LANG-Umgebungsvariable zu haben. Ich glaube, dass UTF-8 in Abwesenheit von LANG tatsächlich der Standard ist. Ich weiß allerdings nicht, wie der Windows-Port eingerichtet ist. Ich habe den starken Verdacht, dass sed überhaupt keine Erkennungsverarbeitung für den Eingabestream durchführt.

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

Sie können auch versuchen, Escape-Zeichen wie hier erwähnt zu verwenden: http://forums.whirlpool.net.au/forum-replies-archive.cfm/841095.html Das scheint jedoch sehr umständlich zu sein.

Vanessa Phipps
quelle
@ Mathew: Danke. Es scheint, dass das Problem möglicherweise nicht bei SED.exe selbst liegt, sondern bei der Art und Weise, wie Windows Codepages in seiner cmd.exe-Konsole nicht sehr gut verarbeitet. Vielleicht funktioniert es in seiner PowerShell, aber wenn ich dorthin muss, konzentriere ich mich lieber auf Python. Soweit ich sehen kann, ist UTF-16 (Codepage 1200, msdn.microsoft.com/en-us/library/dd317756%28VS.85%29.aspx ) nur für verwaltete Anwendungen verfügbar , was auch immer das bedeutet, aber es funktioniert sicherlich nicht in der Konsole. Auf UTF-8 und zurück konvertieren? Auf keinen Fall! Python hier komme ich. (oder 'Nix und Bash)
Peter.O
Klingt gut für mich. Ich bin etwas verwirrt darüber, wie cmd.exe das Problem verursacht und wie Python es löst (abgesehen von den bekannten magischen Kräften von Python ( xkcd.com/353 )), aber ich werde nicht so tun, als würde ich die Launen verstehen von cmd.exe. Viel Glück!
Vanessa Phipps
@fred: Lesen Sie: .NET.
Hallo71
2
Ich habe das Problem gelöst ... Ich habe MS vor ungefähr 6 Monaten komplett fallen lassen und benutze jetzt Ubuntu. Es ist so glatt wie Seide ... (und ich schaue nicht zurück ...
Peter.O