zwei Spalten sortieren

0

Ich versuche, den Sortierbefehl (5.97) zu verwenden, um eine Datenspalte und dann eine andere zu sortieren.

Ich mache gerade:

 > ls test/2/*.jpg | sort -t- -k1 -g -s
test/2/0-0.jpg
test/2/0-10.jpg
test/2/0-1.jpg
test/2/0-2.jpg
test/2/0-3.jpg
test/2/0-4.jpg
test/2/0-5.jpg
test/2/0-6.jpg
test/2/0-7.jpg
test/2/0-8.jpg
test/2/0-9.jpg
test/2/1-0.jpg
test/2/1-10.jpg
test/2/1-1.jpg
test/2/1-2.jpg
test/2/1-3.jpg
test/2/1-4.jpg
test/2/1-5.jpg
test/2/1-6.jpg
test/2/1-7.jpg
test/2/1-8.jpg
test/2/1-9.jpg
test/2/2-0.jpg
test/2/2-10.jpg
test/2/2-1.jpg
test/2/2-2.jpg
test/2/2-3.jpg
test/2/2-4.jpg
test/2/2-5.jpg
test/2/2-6.jpg
test/2/2-7.jpg
test/2/2-8.jpg
test/2/2-9.jpg

Aber wie Sie sehen, befinden sich die zweistelligen Zahlen an der falschen Stelle. Gibt es eine Möglichkeit, dies mit sort zu tun?

tkerwin
quelle

Antworten:

2

Fügen Sie nach "-k1" ein "-k2" ein. Dh

ls test/2/*.jpg | sort -t- -k1 -k2 -g -s   (or sort -t- -n -k1 -k2)

Wenn es einen Konflikt gibt, wird er mit dem 2. Feld (-k2) aufgelöst, und (naja, ich verwende) das -n behandelt sie als Zahlen. Wenn Sie die Reihenfolge ändern und -k2 -k1 eingeben, wird nach der zweiten Zahl im Dateinamen sortiert und die erste nur verwendet, wenn ein Konflikt vorliegt.

Glen Y.
quelle
beides ls test/2/*.jpg | sort -t- -k1 -k2 -g -sund ls test/2/*.jpg | sort -t- -k2 -k1 -g -sgib mir das gleiche Ergebnis: test / 2 / 0-0.jpg test / 2 / 1-0.jpg test / 2 / 2-0.jpg test / 2 / 3-0.jpg test / 2 / 4- 0.jpg Test / 2 / 5-0.jpg Test / 2 / 0-1.jpg Test / 2 / 1-1.jpg Test / 2 / 2-1.jpg Test / 2 / 3-1.jpg Test / 2 / 4-1.jpg test / 2 / 5-1.jpg etc. Ich möchte, dass es umgekehrt ist.
Tkerwin
Stellen Sie sort -t- -n -k1 -k2sicher, dass Ihre Felder als Zahlen interpretiert werden. Beide bisher veröffentlichten Antworten haben dies erwähnt.
DaveParillo
-ngibt das gleiche Ergebnis
Tkerwin
1

Hey, der Grund, warum es nicht sortiert wird, ist, dass der Sortierbefehl keine Zahlen in jeder Zeile identifizieren kann. Es betrachtet es als eine Saite. Versuchen Sie, denselben Befehl mit entferntem Suffix .jpg auszuführen. Sie erhalten die Bestellung, die Sie beabsichtigen. Siehe http://www.softpanorama.org/Tools/sort.shtml . Lesen Sie in diesem Link den Abschnitt Bestelloptionen (Option -n). Hoffe das löst dein Problem.


quelle
+1, aber Sie müssen die Erweiterung nicht entfernen, um eine Sortierung zu erhalten, die als numerisch interpretiert wird.
DaveParillo