
Was ist der Unterschied zwischen sort -t' ' -k1,1n -k2,2n
und 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,3
es sortiert nach „Alter 1“, „Alter 100“, … und sort -k2,2 -k3,3
nach „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,3n
ein 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,3
tatsä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,3
sortiert 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.