Ich habe es versucht:
$ echo "2,3435,1" | sort -n
2,3435,1
$ sort -t',' -n test_sort.txt
kill,gill,burger
110,20,30,13
$ cat test_sort.txt
110,20,30,13
kill,gill,burger
Warum funktioniert mein sort
Befehl nicht ?
Mein gewünschter sort
Befehl sollte folgendermaßen funktionieren:
$sort -t',' -n test_sort.txt
110,13,20,30,burger,gill,kill
ANTWORT: tr, '\ n' <a | sort -n | Einfügen -sd, -
"Danke an Stéphane Chazelas"
-t
gibt an, was Felder trennt,sort
ordnet jedoch Datenzeilen neu an. Es verweist nur auf Felder, um zu bestimmen, nach welchem Wert sortiert werden soll.tr , '\n' < a | sort -n | paste -sd, -
Antworten:
sort
arbeitet auf ganzen Linien. Standardmäßig wird der gesamte Inhalt dieser Zeile sortiert, es-k
kann jedoch auch ein oder mehrere Felder in diesen Zeilen sortiert werden.-t
kann verwendet werden, um das Trennzeichen zwischen Feldern zu ändern. Ich kann mir keinen Fall vorstellen, in dem das Verwenden-t
ohne auch das Verwenden-k
Sinn macht.Ihr zweiter Befehl, der entspricht:
produziert:
Welches ist, was ich erwarten würde.
-t','
hat keine Auswirkung, da das Feldtrennzeichen geändert wird, wenn Sie sort nicht angewiesen haben, einzelne Felder zu bearbeiten, und daherk
zuvor sortiert wurde,1
da der numerische Wert 0 ist (und Sie die numerische Reihenfolge mit angefordert haben-n
).quelle
Die Sortierung erfolgt zeilenweise und nicht nach Feldern innerhalb einer Zeile.
Standardmäßig wird nach dem ersten Zeichen in der Zeile sortiert und von dort aus fortgefahren. Sie können aber auch andere "Schlüssel" als am Anfang sortieren. Dies ist nützlich, wenn Sie nach Nachnamen oder einem numerischen Wert am Ende der Zeile usw. sortieren möchten. Dafür ist die
-t
Flagge gedacht - sie wird einzelne Zeilen nicht auflösen und darin sortieren.Wenn Sie dies tun möchten, lesen Sie Inline-Felder sortieren
quelle
Das Sortieren nach Kommas ist einigermaßen möglich:
Ausgänge
Und wenn Sie es wieder in einer Zeile haben möchten:
quelle
paste -sd , -
wäre besser alstr "\b" ,
Es wird einfacher mit
perl
:Dies sortiert nur Zeilen, die Zahlen enthalten. Wenn Sie möchten, dass Sortierzeilen wie
sort -n
folgt Zeichenfolgen enthalten , versuchen Sie Folgendes:Dieser Ansatz funktioniert immer noch nur, wenn like nur Zeichenfolge enthält, fehlgeschlagen mit like enthält gemischte Zeichenfolge, Zahlen wie
kill,gill,20
.quelle