Sortierbefehl unter Unix mit numerischer Sortierung

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.