sort -u e sort | uniq produza a mesma saída *: todas as linhas na entrada, exatamente uma vez cada, em ordem crescente. Esse é o comportamento padrão de uniq .
uniq -u , por outro lado, pergunta :
-uSuppress the writing of lines that are repeated in the input.
Este é um comportamento muito diferente: somente as linhas que não são repetidas são exibidas. Quando o arquivo foi classificado primeiro, isso significa que as linhas aparecem apenas uma vez no arquivo inteiro (que é o que você queria).
* Há algumas ressalvas sobre como sort e uniq consideram a igualdade, o que Stéphane observou em esta resposta a uma questão relacionada . Para o código do idioma POSIX ou arquivos de alguma forma normalizada, eles são idênticos; para outros, pode haver diferenças distinguíveis.