4

I have an issue sorting a file based on the first two columns.

The layout of the file is:

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

.... ....

I used this command : sort -n -k 1,2 "$fpath" -o "$fpath.ordered"

The sort result is:

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

.... ....

I don't understand why all columns get sorted (see 3rd column & PizzaFan Insurance)

I think -k 1,2 means sort on column 1 and resolve ties with column 2, but it's like it doesn't work.

It's the same as using the: sort -n "$fpath" -o "$fpath.ordered"

  • kalispera file :) Goodys gia panta :P – SpyrosP Apr 23 '11 at 19:16
  • 1
    I don't understand why sort made entries appear and disappear. Can you post the whole file or show a shorter example? – drysdam Apr 23 '11 at 19:24
  • It is just a portion of the file entries don't dissappear they are just sorted, but I didn't post the whole file – George Apr 23 '11 at 19:33
4

If you want a stable sort (relative order of the input rows is preserved in case of ties), you need to use the -s or --stable flag.

| improve this answer | |
3

If you want GNU sort to be stable then you must pass -s. Otherwise, records with the same key will come out in an arbitrary order based on sort's internal algorithm.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy