Acredito que você precise usar as classes de caracteres baseadas em unicode. A classe com reconhecimento de localidade para caracteres de palavra é [:alnum:] e isso é usado dentro da classe de caracteres, portanto, o comando seria
grep '[[:alnum:]]\{4\}' cyrillicstuff
e certifique-se de que sua localidade esteja configurada para a codificação na qual o arquivo realmente está. Você pode verificar com o comando locale e procurar o valor que ele dá para a categoria LC_CTYPE .
Esta sintaxe é suportada por todas as ferramentas que usam expressões regulares POSIX básicas ou estendidas como sed, awk etc. e também por perl e "expressões regulares compatíveis com perl" usadas por python e php. Perl e "expressões regulares compatíveis com perl" têm uma sintaxe adicional \pX e \p{xxx} , em que X ou xxx é um nome de categoria unicode, portanto \pL é o mesmo que [:alpha:] e \p{Uppercase} deve ser o mesmo que [:upper:] . Todas as categorias unicode devem ser utilizáveis.
Ad python. O Python também é perfeitamente unicode. No python 3 ele deve funcionar imediatamente, abrindo arquivos na codificação local parece ser o padrão (mas eu apenas procurei, não testei). No entanto, no python 2, você tem que especificar as codificações lá manualmente. Eles devem ser definidos para stdin, stdout e stderr, mas para todos os outros arquivos você deve usar a função codecs.open e especificar a codificação obtida de locale.getpreferredencoding() e inicializar os códigos de idioma como em C com locale.setlocale(locale.LC_ALL, '') . / p>