Ich habe Datei1:
"$lvl=57" "$lvl=20" "$lvl=48" "$lvl=17" "$lvl=58"
Datei2 I. wollen:
"$lvl=17" "$lvl=20" "$lvl=48" "$lvl=57" "$lvl=58"
Grundsätzlich numerisch sortieren von Datei1.
Kommentare
- Wenn ich ein einfaches Unix
sort
auf Ihrer Datei1 ohne Optionen ausführe, erhalte ich Ihre Datei2. Was machst du anders Was lassen Sie von dieser Frage aus?
Antwort
Ich mag -V –version-sort: Es verhält sich in vielen Situationen sehr gut, wenn Zeichenfolgen und Zahlen gemischt werden.
sort -V
Ich verwende diese Option sehr oft …
In eine Richtung , ls -v
für die Versionssortierung ls
.
Antwort
Sie müssen sort -n
anweisen, das Teil nach =
zu sortieren:
sort -t = -k 2n
Kommentare
- Ich habe kürzlich nach diesem ^^ gesucht. Aber noch eine Frage: Was bedeutet
-k2n
? Bezieht sich das auf die numerische Sortierung? Vielen Dank. - @KasiyA
-k
definiert einen Sortierschlüssel. Weitere Informationen finden Sie in der Manpage.-k2n
definiert einen Sortierschlüssel, der am zweiten Feld beginnt und am Ende der Zeile endet, und macht ihn zu einem numerischen Sortierschlüssel.
Antwort
Ich habe festgestellt, dass Sie nur sort -h
ausführen, es wird funktionieren. Sie nennen es --human-numberic-sort
.
sort -h file1 > file2
Antwort
benutze sort:
sort -n file1 > file2
-n, –numeric-sort
vergleiche nach dem numerischen Wert der Zeichenfolge
sort -g file1 > file 2
-g, –general-numeric-sort
Kommentare
- Nein, all diese Zeilen haben mit
sort -n
dieselbe Rangfolge, da sie ' nicht mit einer Zahl beginnen. Der Grund für die Sortierung ist die vollständige Sortierung der letzten Zeile (lexikalisch, nicht numerisch) für Zeilen mit derselben Rangfolge. Das würde"$lvl=17"
vor"$lvl=2"
sortieren. - @St é phaneChazelas danke für den Hinweis.
- Um es zu paraphrasieren:
-n
und-g
sind hier redundant, da die Eingabe nicht numerisch ist . Diese Antwort ist also irreführend, daher die Abwertung (beachten Sie auch, dass-g
und die langen Optionen GNU-spezifisch sind). - aber -g ist gut allgemein-numerisch- sort
- Da ' noch zum Sortieren numerischer Werte verwendet wird, besteht der Unterschied zu
-n
darin, dass es ' ist nicht auf Dezimalzahlen beschränkt. Das würde immer noch"$lvl=17"
vor"$lvl=2"
als Teil der Sortierung des letzten Auswegs sortieren.
Antwort
sort -n
ist das, was Sie verwenden möchten. Es sortiert, während wir Zahlen sortieren. sort -k 2 -n file1
Kommentare
- Das OP möchte jedoch in aufsteigender Reihenfolge sortieren, was die Standardeinstellung ist. Warum schlagen Sie eine umgekehrte Reihenfolge vor?
- Die obigen Angaben sind korrekt, wenn Felder durch Tabulatoren oder Leerzeichen getrennt sind und in OP ' s Fall.