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
.
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"
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
.
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
.
Tags sort