Seu uso de tr é inteligente. Mas você precisa sort antes de usar uniq , porque uniq apenas analisa linhas adjacentes. Então nós temos
cat file.txt | sort | uniq -c | sort -r | awk '{print $2, $1}' | head -n 10
Além disso, como você pode ver, o uso de -k e -n para classificação é desnecessário neste caso (embora não esteja errado).