Niemożliwe jest (bez użycia ogromnego stołu) rozróżnienie japońskiego kanji od ideografu Han nie używanego w języku japońskim (np. Wariant chiński lub koreański).
Jeśli chcesz tylko wykryć dowolny ideograf Hana w zakresie podstawowym (\ u4e00 do \ u9fff), to są one zakodowane w 3 bajtach, pierwszy bajt zawsze zawiera się między 0xe4 a 0xe9, drugi i trzeci bajt między 0x80 a 0xbf.
Istnieją tutaj dwie trudności, najpierw musisz powiedzieć grepowi, że chcesz zajmować się bajtami, a nie znakami; następnie musisz wpisać bajty 0xe4, 0xe9, 0x80 i 0xbf, aby umieścić je w wyrażeniu regularnym.
Odkryłem, że przełącznik -P działa zarówno; a linia, którą chcesz to:
Zgodnie z piątą tabelą tutaj kanji to znaki pomiędzy \u4e00i\u9fff
grepWydaje się, że moja implementacja nie jest w stanie obsłużyć znaków Unicode (to jest GNU grep 2.14 na Archlinuxie), ale nadal możemy jej używać \x. Możesz znaleźć odpowiednie kody tutaj lub użyć narzędzia takiego jak hexeditje zdobyć.
Dla wszystkiego, co znajduje się w naszym kręgu zainteresowań, powyżej e9 be a5zwróciłem „Niepoprawny znak zestawienia”, więc oto co wymyśliłem:
To jest równoważne z grep "[一-龥]". problem polega na tym, że jest on zależny od ustawień regionalnych i używa reguł sortowania; to znaczy, tylko elementy, dla których zdefiniowano porządek sortowania, mogą być użyte w zakresie lub dopasowane. -PPrzełącznik właśnie robi dopasowanie binarne, niezależnie od lokalizacji. Podejście lokalne wykorzystuje kulturową definicję „zakresu znaków”, podejście binarne wykorzystuje definicję wartości kodowania „zasięgu”. Szczególnie w przypadku skryptów alfabetycznych wyniki są zupełnie inne. (tutaj dla ideografii Hana jest to w przybliżeniu odpowiednik)
Zgodnie z piątą tabelą tutaj kanji to znaki pomiędzy
\u4e00
i\u9fff
grep
Wydaje się, że moja implementacja nie jest w stanie obsłużyć znaków Unicode (to jest GNU grep 2.14 na Archlinuxie), ale nadal możemy jej używać\x
. Możesz znaleźć odpowiednie kody tutaj lub użyć narzędzia takiego jakhexedit
je zdobyć.Dla wszystkiego, co znajduje się w naszym kręgu zainteresowań, powyżej
e9 be a5
zwróciłem „Niepoprawny znak zestawienia”, więc oto co wymyśliłem:źródło
grep "[一-龥]"
. problem polega na tym, że jest on zależny od ustawień regionalnych i używa reguł sortowania; to znaczy, tylko elementy, dla których zdefiniowano porządek sortowania, mogą być użyte w zakresie lub dopasowane.-P
Przełącznik właśnie robi dopasowanie binarne, niezależnie od lokalizacji. Podejście lokalne wykorzystuje kulturową definicję „zakresu znaków”, podejście binarne wykorzystuje definicję wartości kodowania „zasięgu”. Szczególnie w przypadku skryptów alfabetycznych wyniki są zupełnie inne. (tutaj dla ideografii Hana jest to w przybliżeniu odpowiednik)