Como usar o grep com arquivos em codificação arbitrária, sem locale instalado e sem sudo?

4

Eu tenho o código de idioma utf-8 em meu computador e quero pesquisar arquivos codificados em KOI8-R. Mas eu não tenho locale KOI8-R instalado. E eu não tenho direitos de sudo para instalar esta localidade.

É possível pesquisar com o grep nessas condições? Posso fazer uma solução alternativa? Converter esses arquivos codificados para UTF-8 na mosca, de alguma forma?

PS: Eu já li essa pergunta: Como usar o grep / ack com arquivos de forma arbitrária codificação?

    
por 6868686868686868112189 27.09.2015 / 00:25

1 resposta

1

Contanto que você esteja procurando por caracteres específicos (isto é, não usando conjuntos de caracteres ou busca sem distinção entre maiúsculas e minúsculas), você pode fazer o grep procurar bytes: converter qualquer caractere não-ASCII no regexp para o valor de byte que o representa no KOI8-R, e invoque o grep no local C ( LC_ALL=C grep … , ou apenas LC_CTYPE=C LC_COLLATE=C grep … ) para que ele procure por bytes.

Você pode usar iconv -f utf-8 -t koi8-r para converter uma string digitada em UTF-8 para KOI8-R, mesmo que as localidades KOI8-R não estejam listadas em locale -a .

O % co_de O método% também depende do iconv e não precisa da localidade a ser construída.

    
por 27.09.2015 / 01:48