A resposta está na ordem de classificação e o que o uniq
usa para um valor de campo quando há menos que o número de campo especificado ( N
) ao usar -f N
.
Como vimos, você tem conjuntos de caracteres ASCII, portanto, a ordem de classificação é muito previsível:
% sort file.txt
A
aaa upc
aaa ztp
b
b
B
B
bbb xpz
c
c
C
Agora, vamos usar uniq -f 1
para obter linhas exclusivas com o primeiro campo (separado por espaços em branco) de cada linha durante a verificação:
% sort file.txt | uniq -f 1
A
aaa upc
aaa ztp
b
bbb xpz
c
Agora, é importante notar que uniq
usa string nula para linhas que tem menos que os campos mencionados, 1 neste caso; Assim, todas as linhas que têm apenas um campo seriam tratadas como tendo sequências nulas para outros campos, comparando com outras linhas com campos > = 2.
Então, da sort file2.txt
output:
b
b
B
B
seriam todos tratados como iguais e somente a primeira linha contendo b
seria preservada, por isso você tem um b
na saída.
Da mesma forma, de:
c
c
C
apenas o primeiro c
acabaria na saída de uniq
.