Sortieren nach verschiedenen Spalten in einer Sequenz oder Sortieren nach mehreren Spalten gleichzeitig

Sortieren nach verschiedenen Spalten in einer Sequenz oder Sortieren nach mehreren Spalten gleichzeitig

Was ist der Unterschied zwischen sort -t' ' -k1,1n -k2,2nund sort -t' ' -k1,2n?

Können Sie Beispiele nennen?

Ich habe es versucht:

logan@logan-mainPC:~/my-test/learn-sort$ cat myage 
my age 1
my age 100
my age 2
my age 200
logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,3
my age 1
my age 100
my age 2
my age 200
logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,2 -k3,3
my age 1
my age 100
my age 2
my age 200
logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,2 -k3,3n
my age 1
my age 2
my age 100
my age 200

Ich denke, sort -k2,3es sortiert nach „Alter 1“, „Alter 100“, … und sort -k2,2 -k3,3nach „Alter“, „Alter“, … und dann nach „1“, „100“, …. Da sie alle Spalten als Zeichenfolgen behandeln, erzeugen sie dasselbe Ergebnis.

Es wird jedoch sort -k2,2 -k3,3nein anderes Ergebnis erzeugt, da Spalte 3 als Zahlen behandelt wird.

Aber dann:

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort -k2,3n
my age 1
my age 100
my age 2
my age 200

was seltsam ist. Habe herausgefunden, dass der Grund darin liegt, dass Spalte 2 keine Zahlen enthält.

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort --debug -k2,3n
sort: using ‘en_AU.UTF-8’ sorting rules
sort: key 1 is numeric and spans multiple fields
my age 1
   ^ no match for key
________
my age 100
   ^ no match for key
__________
my age 2
   ^ no match for key
________
my age 200
   ^ no match for key
__________

Danke.

Antwort1

Anhand der Flagge kann ich erkennen, was passiert --debug.

sort -k2,3tatsächlich sortiert ‚Alter 1‘, ‚Alter 100‘, …

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort --debug -t' ' -k2,3
sort: using ‘en_AU.UTF-8’ sorting rules
my age 1
   _____
________
my age 100
   _______
__________
my age 2
   _____
________
my age 200
   _______
__________

sort -k2,2 -k3,3sortiert nach „Alter“, … dann „1“, „100“, …

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort --debug -t' ' -k2,2 -k3,3
sort: using ‘en_AU.UTF-8’ sorting rules
my age 1
   ___
       _
________
my age 100
   ___
       ___
__________
my age 2
   ___
       _
________
my age 200
   ___
       ___
__________

zuletzt

logan@logan-mainPC:~/my-test/learn-sort$ cat myage | sort --debug -t' ' -k2,2 -k3,3n
sort: using ‘en_AU.UTF-8’ sorting rules
my age 1
   ___
       _
________
my age 2
   ___
       _
________
my age 100
   ___
       ___
__________
my age 200
   ___
       ___
__________

behandelt die dritte Spalte als Zahlen.

verwandte Informationen