Tidak mungkin (tanpa menggunakan meja besar) untuk membedakan kanji Jepang dari ideograf Han yang tidak digunakan dalam bahasa Jepang (misalnya, varian Cina atau Korea).
Jika Anda hanya ingin mendeteksi ideograf Han apa pun dalam rentang dasar (\ u4e00 hingga \ u9fff) maka mereka disandikan dalam 3 byte, byte pertama selalu antara 0xe4 dan 0xe9, byte kedua dan ketiga antara 0x80 dan 0xbf.
Ada dua kesulitan di sini, pertama Anda harus memberi tahu grep bahwa Anda ingin menjaga byte dan bukan karakter; maka Anda harus mengetik byte 0xe4, 0xe9, 0x80 dan 0xbf untuk menempatkannya dalam ekspresi regexp.
Saya menemukan saklar -P melakukan keduanya; dan garis yang Anda inginkan adalah:
Menurut tabel kelima di sini , kanji adalah karakter antara \u4e00dan\u9fff
Implementasi saya greptampaknya tidak dapat menangani karakter unicode (itu GNU grep 2.14 di Archlinux), tetapi kita masih bisa menggunakan \x. Anda dapat menemukan kode masing-masing di sini atau menggunakan alat suka hexeditmendapatkannya.
Untuk apa pun dalam rentang minat kami di atas, e9 be a5dikembalikan "Karakter susunan tidak valid" jadi inilah yang saya buat:
+1 Itu bekerja juga, tapi Pablo sedikit lebih cepat ...
Nicolas Raoul
3
Itu setara dengan grep "[一-龥]". masalahnya adalah itu tergantung pada lokal, dan menggunakan aturan pemeriksaan; yaitu, hanya elemen yang urutan penyortirannya dapat digunakan dalam kisaran atau cocok. The -Psaklar hanya melakukan pencocokan biner, terlepas dari lokal. Pendekatan berbasis lokal akan menggunakan definisi budaya "rentang karakter", pendekatan berbasis biner akan menggunakan definisi nilai pengkodean "rentang". Khusus untuk skrip alfabet, hasilnya sangat berbeda. (di sini untuk ideografi Han kira-kira setara)
Menurut tabel kelima di sini , kanji adalah karakter antara
\u4e00
dan\u9fff
Implementasi saya
grep
tampaknya tidak dapat menangani karakter unicode (itu GNU grep 2.14 di Archlinux), tetapi kita masih bisa menggunakan\x
. Anda dapat menemukan kode masing-masing di sini atau menggunakan alat sukahexedit
mendapatkannya.Untuk apa pun dalam rentang minat kami di atas,
e9 be a5
dikembalikan "Karakter susunan tidak valid" jadi inilah yang saya buat:sumber
grep "[一-龥]"
. masalahnya adalah itu tergantung pada lokal, dan menggunakan aturan pemeriksaan; yaitu, hanya elemen yang urutan penyortirannya dapat digunakan dalam kisaran atau cocok. The-P
saklar hanya melakukan pencocokan biner, terlepas dari lokal. Pendekatan berbasis lokal akan menggunakan definisi budaya "rentang karakter", pendekatan berbasis biner akan menggunakan definisi nilai pengkodean "rentang". Khusus untuk skrip alfabet, hasilnya sangat berbeda. (di sini untuk ideografi Han kira-kira setara)