Bagaimana saya bisa mengidentifikasi karakter non-ASCII dari shell?


12

Apakah ada cara sederhana untuk mencetak semua karakter non-ASCII dan nomor baris di mana mereka terjadi pada file menggunakan perintah utilitas baris seperti grep, awk, perl, dll?

Saya ingin mengubah penyandian file teks dari UTF-8 ke ASCII, tetapi sebelum melakukannya, ingin secara manual mengganti semua instance karakter non-ASCII untuk menghindari perubahan karakter yang tidak terduga yang dipengaruhi oleh rutin konversi file.

Jawaban:


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

atau

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

di mana utf8.txt berada

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

1
Terima kasih. Cuplikan perl bekerja secara langsung, tetapi versi grep tidak bekerja dengan GNU grep 2.16. Saya bisa membuatnya bekerja melalui LC_ALL=C grep -n -P [$'\x80'-$'\xFF']:, di mana bit pertama mematikan pemeriksaan.
Joe Corneli

4

Saya ingin mengubah penyandian file teks dari UTF-8 ke ASCII ...

... ganti semua instance karakter non-ASCII ...

Kemudian beri tahu alat konversi Anda untuk melakukannya.

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

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

Dia mengatakan ingin melakukan penggantian itu secara manual. Mungkin penggantian yang paling tepat tergantung pada konteks.
mark4o
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.