Você não pode redirecionar ambos de e para um arquivo, pelo menos não desse jeito. O problema é que quando o shell configura a parte de redirecionamento para, ele trunca o arquivo. Então, tenta ler do arquivo, está vazio.
Se a sua distro tiver um pacote moreutils , ela conterá um programa sponge para resolver esse problema: tr 'a' 'z' < test.txt | sponge test.txt funcionará.
Caso contrário, você precisa gravar sua saída em um arquivo temporário e usar mv para sobrescrever o arquivo original.