Мне кажется, что если вы хотите избежать тяжеловеса, вам нужно предоставить персонажей самостоятельно, и, учитывая, что это не является началом для действительно общего решения, вы застряли с использованием тяжеловеса.
Одно тяжелое решение
vinko@parrot:~$ more t.py
# coding: UTF-8
print unicode.upper("żółw".decode('utf-8'))
vinko@parrot:~$ python t.py
ŻÓŁW
Полутяжелое решение, которое потребует от вас указания каждого символа
vinko@parrot:~$ echo żół | tr "[żół]" "[ŻÓŁ]"
ŻÓŁ
РЕДАКТИРОВАТЬ: Основываясь на других ответах и комментариях, BASH 4.0 IS чувствителен к локали и знает широкие символы. Вы должны установить правильный языковой стандарт (LC_CTYPE или LC_ALL), чтобы BASH мог сказать, что он должен делать. Также кажется, что в последнее время есть версии tr, чувствительные к локали (например, Mac OSX 10.6)