sort -u remove as linhas exclusivas. Então, o problema potencial é que essas três linhas não são iguais e sort -u
deixará todas elas:
foo
foo
foo
Não importa o quão perto você esteja, é difícil perceber por quê. Ou seja, a menos que você faça um dump hexadecimal, com xxd
, por exemplo:
0000000: 666f 6f0a 666f 6f20 0a66 6f6f e280 820a foo.foo .foo....
0x0a
é nova linha, se você não estiver familiarizado com os dumps hexadecimais. Então os três "foo" s são:
666f 6f 0a
666f 6f20 0a
666f 6fe2 8082 0a
Aha! Isso é na verdade foo
, foo<SPACE>
(o 0x20
) e foo<EN-SPACE>
(o 0xe28082
, que é U + 2002 codificado em UTF-8).
Você provavelmente tem algo parecido acontecendo. Você precisa usar um editor hexadecimal ou um editor de texto configurado para mostrar caracteres invisíveis. Por exemplo, aqui está o que parece em gvim
com :set list
. Acabei de digitar o comando ga
para ver qual é o caractere sob o cursor, revelando que é U + 2002. Você também pode ver como o final da linha ( $
) não está onde você espera nos dois espaços após eles: