Utilitário GNU: sort

4

Eu tenho um problema ao classificar um arquivo com base nas duas primeiras colunas.

O layout do arquivo é:

1 998688068 PizzaFan Insurance 22.47
5 072821325 Plaisio Computers 26.35
4 998688068 PizzaFan Food 27.32
5 456834578 G.Yannopoulos Medical 91.67

.... ....

Eu usei este comando: sort -n -k 1,2 "$fpath" -o "$fpath.ordered"

O resultado do tipo é:

1 473151252 Goodys Food 7.15
1 951515524 Atlantic SuperMarket 41.32
1 998688068 Atlantic SuperMarket 80.23
1 998688068 PizzaFan Food 61.72
1 998688068 PizzaFan Insurance 22.47
2 094321587 Vasilopoulos SuperMarket 6.50

.... ....

Eu não entendo por que todas as colunas são classificadas (veja a 3ª coluna & PizzaFan Insurance)

Eu acho que -k 1,2 significa classificar na coluna 1 e resolver os laços com a coluna 2, mas é como se não funcionasse.

É o mesmo que usar o: sort -n "$fpath" -o "$fpath.ordered"

    
por Gilles 23.04.2011 / 21:14

2 respostas

4

Se você deseja uma classificação estável (a ordem relativa das linhas de entrada é preservada no caso de empates), é necessário usar o sinalizador -s ou --stable .

    
por 23.04.2011 / 21:37
3

Se você quer que o GNU seja stable então você deve passar -s . Caso contrário, os registros com a mesma chave sairão em uma ordem arbitrária com base no algoritmo interno de sort .

    
por 23.04.2011 / 21:38

Tags