O GNU sed (para Windows) pode lidar com Unicode? Em caso afirmativo, é um problema de página de código / localidade ou uma opção?


10

Eu uso o GNU SED há alguns anos. Às vezes, isso me deixa meio confuso, mas faz um bom trabalho ... para conjuntos de caracteres de byte único!
De vez em quando, noto referências ao GNU SED que reconhece Unicode, mas o mais próximo que eu vi disso é seu modo "binário". E binário não é Unicode.
O GSED pode processar um arquivo de texto Unicode na resolução do CodePoint, incluindo e especialmente \ r \ n (Windows) ... e, se puder, espera UTF-8, UTF-16 ou o quê? e como o SED detecta a codificação?


1
Normalmente, o unicode é especificado com a opção \ uXXXX. Tente compilação desse cara japanease sky.geocities.jp/hp_gabo200x/room_tool.html
Mikhail

Respostas:


1

Eu não sei muito sobre o sed, mas depois de pesquisar bastante no Google parece ter suporte para uma variedade de páginas de código através da variável de ambiente LANG. Eu acredito que UTF-8 é de fato o padrão na ausência de LANG. Não sei como a porta do Windows está configurada. Eu tenho uma forte suspeita de que o sed não executa nenhum processamento de detecção no fluxo de entrada.

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

Você também pode tentar caracteres de escape, conforme mencionado aqui: http://forums.whirlpool.net.au/forum-replies-archive.cfm/841095.html Isso parece muito complicado.


@ Matthew: Obrigado. Está começando a parecer que o problema pode não estar no próprio SED.exe, mas na maneira como o Windows não lida muito bem com as páginas de código no console do cmd.exe. Talvez ele funcione no PowerShell, mas se eu tiver que ir para lá, prefiro me concentrar no Python. Pelo que pude ver, o orgulho e a alegria do Windows, o UTF-16 (página de código 1200, msdn.microsoft.com/en-us/library/dd317756%28VS.85%29.aspx ) está disponível apenas para aplicativos gerenciados , o que quer que isso signifique, mas certamente não funciona no console. Converta para UTF-8 e vice-versa? De jeito nenhum! Python aqui vou eu. (ou 'Nix e Bash)'
Pedro.

Parece bom para mim. Estou meio confuso sobre como o cmd.exe está causando o problema e como o Python o soluciona (além dos conhecidos poderes mágicos do Python ( xkcd.com/353 )), mas não vou fingir entender os caprichos do cmd.exe. Boa sorte para você!
Vanessa Phipps

@fred: Leia: .NET.
precisa

2
Eu resolvi o problema ... abandonei o MS completamente há cerca de 6 meses e agora uso o Ubuntu .. É tão suave quanto a seda ... (e não estou olhando para trás ...
Peter.O
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.