巨大なUTF-8テキストファイルで、日本語 kanjis を含むすべての行を表示したい。
これは何のgrep
(または他の)式ですか?
誤解しない限り、漢字は\u4e00
および\u4dbf
。
kanas を表示する必要はありませんが、表示することは大きな問題ではありません。
日本語の漢字と日本語で使用されていない漢字(たとえば、中国語や韓国語の変種)を区別することは(巨大なテーブルを使用しない限り)不可能です。
基本的な範囲(\ u4e00から\ u9fff)の漢字表意文字を検出したい場合、それらは3バイトでエンコードされ、最初のバイトは常に0xe4から0xe9の間、2番目と3番目のバイトは0x80から0xbfの間です。
ここには2つの困難があります。最初に、文字ではなくバイトの世話をしたいことをgrepに伝える必要があります。次に、0xe4、0xe9、0x80、および0xbfバイトを入力して、それらを正規表現式に入れる必要があります。
-Pスイッチが両方を実行することを発見しました。そしてあなたが望む行は:
grep -P "[\xe4-\xe9][\x80-\xbf][\x80-\xbf]"
仮名も必要な場合:
grep -P "[\xe4-\xe9][\x80-\xbf][\x80-\xbf]|\xe3[\x81-\x83][\x80-\xbf]"