Como posso identificar caracteres não-ASCII do shell?

9

Existe uma maneira simples de imprimir todos os caracteres não-ASCII e os números de linha nos quais eles ocorrem em um arquivo usando um utilitário de linha de comando, como grep , awk , perl , etc?

Eu quero alterar a codificação de um arquivo de texto de UTF-8 para ASCII, mas antes de fazê-lo, deseje substituir manualmente todas as instâncias de caracteres não-ASCII para evitar alterações de caracteres inesperadas efetuadas pela rotina de conversão de arquivos. p>     

por user001 26.04.2012 / 20:59

2 respostas

11

$ perl -ne 'print "$. $_" if m/[\x80-\xFF]/'  utf8.txt
2 Pour être ou ne pas être
4 Byť či nebyť
5 是或不

ou

$ grep -n -P '[\x80-\xFF]' utf8.txt
2:Pour être ou ne pas être
4:Byť či nebyť
5:是或不

onde utf8.txt é

$ cat utf8.txt
To be or not to be.
Pour être ou ne pas être
Om of niet zijn
Byť či nebyť
是或不
    
por 27.04.2012 / 00:07
4

I want to change the encoding of a text file from UTF-8 to ASCII ...

... replace all instances of non-ASCII characters ...

Em seguida, peça à sua ferramenta de conversão para fazer isso.

$ iconv -c -f UTF-8 -t ASCII <<< 'Look at 私.'
Look at .

$ iconv -c -f UTF-8 -t ASCII//translit <<< 'áēìöų'
aeiou
    
por 27.04.2012 / 00:44