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?

War es hilfreich?

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ätte sort 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top