É impossível (sem usar uma mesa enorme) separar um kanji japonês de um ideograma han não usado em japonês (por exemplo, uma variante chinesa ou coreana).
Se você quiser apenas detectar qualquer ideograma Han no intervalo básico (\ u4e00 a \ u9fff) então eles são codificados em 3 bytes, o primeiro byte é sempre entre 0xe4 e 0xe9, o segundo e terceiro bytes entre 0x80 e 0xbf.
Existem duas dificuldades aqui, primeiro você tem que dizer ao grep que você quer cuidar dos bytes e não dos caracteres; então você tem que digitar os 0xe4, 0xe9, 0x80 e 0xbf bytes para colocá-los na expressão regexp.
Eu descobri que o switch -P faz as duas coisas; e a linha que você quer é:
grep -P "[\xe4-\xe9][\x80-\xbf][\x80-\xbf]"
e se você quiser kana também:
grep -P "[\xe4-\xe9][\x80-\xbf][\x80-\xbf]|\xe3[\x81-\x83][\x80-\xbf]"