Ich versuche nach mehreren Spalten zu sortieren. Die Ergebnisse sind nicht wie erwartet.
Hier sind meine Daten (people.txt):
Simon Strange 62
Pete Brown 37
Mark Brown 46
Stefan Heinz 52
Tony Bedford 50
John Strange 51
Fred Bloggs 22
James Bedford 21
Emily Bedford 18
Ana Villamor 44
Alice Villamor 50
Francis Chepstow 56
Folgendes funktioniert ordnungsgemäß:
bash-3.2$ sort -k2 -k3 <people.txt
Emily Bedford 18
James Bedford 21
Tony Bedford 50
Fred Bloggs 22
Pete Brown 37
Mark Brown 46
Francis Chepstow 56
Stefan Heinz 52
John Strange 51
Simon Strange 62
Ana Villamor 44
Alice Villamor 50
Folgendes funktioniert jedoch nicht wie erwartet:
bash-3.2$ sort -k2 -k1 <people.txt
Emily Bedford 18
James Bedford 21
Tony Bedford 50
Fred Bloggs 22
Pete Brown 37
Mark Brown 46
Francis Chepstow 56
Stefan Heinz 52
John Strange 51
Simon Strange 62
Ana Villamor 44
Alice Villamor 50
Ich habe versucht, nach Nachnamen und dann nach Vornamen zu sortieren, aber Sie werden sehen, dass die Villamors nicht in der richtigen Reihenfolge sind. Ich hatte gehofft, nach dem Nachnamen zu sortieren und dann, wenn die Nachnamen übereinstimmten, nach dem Vornamen zu sortieren.
Es scheint, dass es etwas gibt, wie das funktionieren soll, was ich nicht verstehe. Ich könnte das natürlich auch anders machen (mit awk), aber ich möchte sort verstehen.
Ich verwende die Standard-Bash-Shell unter Mac OS X.
Mit GNU
sort
machst du das so, nicht sicher über MacOS:Update laut Kommentar. Zitat von
man sort
:quelle
-k
so viel wie möglich einschließt.sort
wird die gesamte Zeile verglichen. Oder mit GNU könnensort
Sie-s
für eine stabile Sortierung verwenden.