Diferença entre usar 'sort -u' e 'sort | uniq -u '

2

Eu cheguei em um nível enquanto explorava o bash que consistia em encontrar a linha de texto que ocorre apenas uma vez em um determinado arquivo.

Por que a saída do comando sort -u file é diferente da saída de sort file| uniq -u ? Não deveriam ser iguais?

    
por laflame1x0 24.09.2017 / 23:23

1 resposta

5

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 :

-u Suppress 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.

    
por 24.09.2017 / 23:37

Tags