答案1
不可能(不使用巨大的桌子)区分日语汉字和日语中未使用的汉字表意文字(例如中文或韩语变体)。
如果您只想检测基本范围(\u4e00 到 \u9fff)内的任何汉字表意文字,那么它们会以 3 个字节进行编码,第一个字节始终在 0xe4 和 0xe9 之间,第二个和第三个字节在 0x80 和 0xbf 之间。
这里有两个困难,首先你必须告诉 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]"