Come posso identificare i caratteri non ASCII dalla shell?


12

C'è un modo semplice per stampare tutti i caratteri non-ASCII e i numeri di riga in cui si verificano in un file utilizzando un'utility a riga di comando come grep, awk, perl, ecc?

Voglio cambiare la codifica di un file di testo da UTF-8 a ASCII, ma prima di farlo, desidero sostituire manualmente tutte le istanze di caratteri non ASCII per evitare cambiamenti imprevisti di carattere effettuati dalla routine di conversione dei file.

Risposte:


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

o

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

dove utf8.txt è

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

1
Grazie. Lo snippet perl funziona direttamente, ma la versione grep non funziona con GNU grep 2.16. Sono stato in grado di farlo funzionare tramite:, LC_ALL=C grep -n -P [$'\x80'-$'\xFF']dove il primo bit disattiva le regole di confronto.
Joe Corneli,

4

Voglio cambiare la codifica di un file di testo da UTF-8 a ASCII ...

... sostituisci tutte le istanze di caratteri non ASCII ...

Quindi dì al tuo strumento di conversione di farlo.

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

$ iconv -c -f UTF-8 -t ASCII//translit <<< 'áēìöų'
aeiou

Ha detto che voleva fare quella sostituzione manualmente. Forse la sostituzione più appropriata dipende dal contesto.
mark4o
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.