Fehler beim Sortieren oder Missverständnis

Fehler beim Sortieren oder Missverständnis

Angenommen, ich habe diese Datei

b 10 foo
a 10 bar
a 2 bar

Ich möchte alphabetisch nach der dritten Spalte sortieren. Bei Gleichstand möchte ich numerisch nach der zweiten Spalte sortieren. In der Manpage des Unix-Sortierprogramms finden Sie Folgendes:

> sort -k3 -k2n a

Das gibt

a 2 bar
a 10 bar
b 10 foo

Welches ist richtig.

Was ich eigentlich möchte, ist, nach der ersten Spalte alphabetisch zu sortieren und bei Gleichstand nach der zweiten Spalte numerisch. Kann mir jemand erklären, warum

> sort -k1 -k2n a

Gibt

a 10 bar
a 2 bar
b 10 foo

Was ist schlicht und ergreifend falsch?

Antwort1

Der Grund, warum Ihr Beispiel nicht wie erwartet funktioniert, ist, dass sortalle Positionen berücksichtigt werdennachauch das angegebene. In Ihrem Beispiel sortiert das Wörterbuch -k1die Zeichenfolge sozusagen a 10 barvor a 2 bar, und Sie benötigen keinen Tie-Break.

Sie müssen die Grenzen des Sortierschlüssels explizit angeben, wie auf der Manpage beschrieben:

   -k, --key=POS1[,POS2]
          start a key at POS1, end it at POS2 (origin 1)

Beispiel:

$ sort -k1,1 -k2n theFile
a 2 bar
a 10 bar
b 10 foo

verwandte Informationen