Warum Linux Art gibt nicht mir gewünschten Ergebnisse?
Frage
Ich habe eine Datei a.csv mit Inhalt ähnlich wie unter
a,b,c
a ,aa, a
a b, c, f
a , b, c
a b a b a,a,a
a,a,a
a aa ,a , t
Ich versuche, es zu sortieren, indem sort -k1 -t, a.csv
mit
Aber es ist gibt folgende Ergebnisse
a,a,a
a ,aa, a
a aa ,a , t
a b a b a,a,a
a , b, c
a,b,c
a b, c, f
Was nicht die eigentliche Art auf der 1. Spalte ist. Was mache ich falsch?
Lösung
Sie haben die Endposition angeben 1 zu sein, auch:
sort -k1,1 -t, a.csv
Andere Tipps
Geben Sie diesen einen Versuch: sort -t, -k1,1 a.csv
Der Mann legt nahe, dass das Ende Feld ausgelassen, werden alle Zeichen auf dem Feld n
beginnend sortieren, bis zum Ende der Zeile:
-k POS1[,POS2]'
The recommended, POSIX, option for specifying a sort field. The
field consists of the part of the line between POS1 and POS2 (or
the end of the line, if POS2 is omitted), _inclusive_. Fields and
character positions are numbered starting with 1. So to sort on
the second field, you'd use `-k 2,2' See below for more examples.
Versuchen Sie stattdessen:
sort -k 1,1 -t , a.csv
Art liest -k 1
als „Art, die aus ersten Feld ab.“ - so effektiv den Punkt des Leitens des Arguments an erster Stelle trotzt
Dies ist in der sortieren Manpage rel="nofollow und etwa im Abschnitt Beispiele gewarnt:
Sortieren numerisch auf dem zweiten Feld und lösen Bindungen durch Sortieren alphabetisch auf dem dritten und vierten Zeichen des Feldes fünf. Verwenden `:‘ als das Feldtrennzeichen:
$ sort -t : -k 2,2n -k 5.3,5.4
Beachten Sie, wenn Sie
-k 2
stattdessen geschrieben von-k 2,2
hättesort
alle verwendet Zeichen in den zweiten Anfang Feld und bis zum Ende des ausfahrbaren Linie als primäre numerisch drücken. Zum die große Mehrheit der Anwendungen, Behandlung von Tasten von mehr als einem Feld als numerische, was Sie nicht tun erwartet.