Uma substituição grep codificação-entendido?

votos
7

Estou frustrado que grep não conseguir encontrar uma palavra como Olá em meus UTF-16 documentos.

Alguém pode recomendar uma versão do grep que tenta adivinhar a codificação do arquivo e, em seguida, manipulá-lo corretamente?

Publicado 05/03/2009 em 01:11
fonte usuário
Em outras línguas...                            


2 respostas

votos
6

ack como substituto grep baseada em perl?

Você definitivamente vai querer verificar para fora ack.

Ele suporta codificações Unicode, e é basicamente grep, mas melhor.

tentar uma localidade Unicode combinando com grep

Se você estiver sob Linux, Unix, etc. você pode querer mudar a sua envariable LANG para uma codificação para combinar seus documentos.

Verifique se o seu local primeiro. Aqui está o meu está definido para por padrão no meu MacBook Pro :

 $ locale 
 LANG="en_US.UTF-8"
 LC_COLLATE="en_US.UTF-8"
 LC_CTYPE="en_US.UTF-8"
 LC_MESSAGES="en_US.UTF-8"
 LC_MONETARY="en_US.UTF-8"
 LC_NUMERIC="en_US.UTF-8"
 LC_TIME="en_US.UTF-8" 
 LC_ALL=

dizer, sob bash:

$ LANG="foo" grep 'gotta be found now' file.name

algo um pouco mais permanente (ter cuidado com isso):

$ export LANG="foo"
$ grep 'bar' mitz.vah
Respondeu 05/03/2009 em 04:16
fonte usuário

votos
2

Perl tem uma maneira melhor sintaxe regex que o grep (muito mais poderoso), ele tem suporte UTF8 e UTF16, mas eu não tenho certeza de como é bom em adivinhar a codificação ... se você diga a ele qual a codificação de usar, no entanto, ele pode ler esses arquivos sem quaisquer problemas e executar expressões regulares sobre eles. Você vai ter que escrever-se um pequeno programa Perl para que (sua própria implementação micro-grep em Perl por assim dizer), mas isso não é muito difícil. Perl existe para todos os principais sistemas operacionais.

Respondeu 05/03/2009 em 01:26
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more