sort -u (unique) funciona para multi-keys, mas não para uma única chave

2

Usando o tipo de classificação GNU. Eu quero imprimir apenas o primeiro de um grupo de linhas, com base em chave (s) duplicada (s).

-k1,2 funciona como esperado - somente a primeira linha ordenada é gerada

printf %s\n 'a a c' 'a a b' 'a a a' | sort -u -k1,2 -t' '
# a a a

-k1 não funciona como esperado - todas as 3 linhas classificadas são geradas

printf %s\n 'a a c' 'a a b' 'a a a' | sort -u -k1 -t' '
# a a a
# a a b
# a a c

Isso é normal para todas as variantes de sort ou é apenas o tipo GNU? Parece bastante propenso a 'resultados inesperados' , já que man sort mostra o segundo número da chave como opcional : -k, --key=POS1[,POS2]

-k1,1 funciona com -u , em que uma classificação simples (ou seja, não -u ) funciona com apenas -k1 .

    
por Peter.O 28.05.2015 / 17:08

1 resposta

3

Acho que esse é o comportamento padrão do POSIX, conforme declarado na página do manual :

-k field_start[type][,field_end[type]]

shall define a key field that begins at field_start and ends at field_end inclusive, unless field_start falls beyond the end of the line or after field_end, in which case the key field is empty. A missing field_end shall mean the last character of the line.

    
por 28.05.2015 / 17:17

Tags