¿Puede GNU sed (para Windows) manejar Unicode? Si es así, ¿es un problema de página de códigos / configuración regional o un cambio?

10

He estado usando GNU SED por un par de años. Me da vueltas un poco a veces, pero hace un buen trabajo ... ¡para conjuntos de caracteres de un solo byte!
De vez en cuando noto que las referencias a GNU SED son compatibles con Unicode, pero lo más cercano que he visto de esto es su modo "binario" ... y el binario no es Unicode.
¿Puede GSED procesar un archivo de texto Unicode con resolución de CodePoint, incluyendo y especialmente \ r \ n (Windows) ... y si puede, ¿espera UTF-8, UTF-16 o qué? ¿Y cómo detecta SED la codificación?

Peter.O
fuente
1
Por lo general, unicode se especifica con la opción \ uXXXX. Pruebe la compilación de este chico japonés sky.geocities.jp/hp_gabo200x/room_tool.html
Mikhail

Respuestas:

1

No sé mucho sobre sed, pero después de buscar en Google, parece tener soporte para una variedad de páginas de códigos a través de la variable de entorno LANG. Creo que UTF-8 es de hecho el valor predeterminado en ausencia de LANG. Sin embargo, no sé cómo está configurado el puerto de Windows. Tengo una fuerte sospecha de que sed no realiza ningún procesamiento de detección en absoluto en la secuencia de entrada.

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

También puede intentar escapar de los caracteres como se menciona aquí: http://forums.whirlpool.net.au/forum-replies-archive.cfm/841095.html Sin embargo, eso parece muy engorroso.

Vanessa Phipps
fuente
@Mathew: Gracias. Está empezando a parecer que el problema puede no estar en SED.exe en sí mismo, sino en la forma en que Windows no maneja muy bien las páginas de códigos en su consola cmd.exe. Tal vez funcione en su PowerShell, pero si tengo que ir allí, prefiero centrarme en Python. Hasta donde puedo ver, el orgullo y la alegría de Windows, UTF-16 (página de códigos 1200, msdn.microsoft.com/en-us/library/dd317756%28VS.85%29.aspx ) está disponible solo para aplicaciones administradas , lo que sea que eso signifique, pero seguramente no funciona en la consola. ¿Convertir a UTF-8 y viceversa? ¡De ninguna manera! Python aquí vengo. (o 'Nix and Bash)
Peter
Suena bien para mí. Estoy un poco confundido sobre cómo cmd.exe está causando el problema y cómo Python lo resuelve (además de los conocidos poderes mágicos de Python ( xkcd.com/353 )), pero no voy a pretender entender los caprichos de cmd.exe. ¡Buena suerte para ti!
Vanessa Phipps
@fred: Leer: .NET.
Hola71
2
He resuelto el problema ... Dejé MS por completo hace unos 6 meses, y ahora uso Ubuntu ... Es tan suave como la seda ... (y no estoy mirando hacia atrás ...
Peter.O