2017-06-25 3 views
3

Ich versuche, eine csv enthalten Temperaturen durch die 4. Spalte sortieren.So sortieren Sie CSV nach spezifischer Spalte

Sort -n -k4 temperature.csv 

Als Ergebnis bekomme ich diese:

2017-06-24 11:20,23.57,19.0,16.7,0.087,3.615 
2017-06-24 11:25,23.51,19.0,16.7,0.087,3.689 
2017-06-24 12:45,22.03,19.0,17.1,0.096,4.152 
2017-06-24 13:00,21.92,19.0,17.1,0.096,4.229 
2017-06-24 14:00,22.22,19.0,17.4,0.197,4.639 
2017-06-24 14:25,22.21,19.0,17.5,0.197,4.774 
2017-06-24 15:10,22.30,19.0,17.1,0.134,5.472 
2017-06-24 16:00,22.42,19.0,17.3,0.134,5.93 
2017-06-24 17:45,22.07,21.0,17.0,0.144,6.472 
2017-06-24 18:25,21.90,21.0,16.9,0.15,6.814 
2017-06-24 19:40,23.01,21.0,16.9,0.318,8.503 

Wie Sie die vierte Spalte ist nicht richtig sortiert sehen. Ich würde 17,5 in der ersten Zeile und 16,7 in der letzten Zeile erwarten.

Ich habe auch versucht dies:

sort -n -t. -k4,1n temperature.csv 

Das Ergebnis ist genau das gleiche wie im vorherigen Beispiel. Kann mir jemand einen Tipp geben?

Antwort

3

Mit dem folgenden Befehl sort:

sort -t, -k4,4 -nr temperature.csv 

Der Ausgang:

2017-06-24 14:25,22.21,19.0,17.5,0.197,4.774 
2017-06-24 14:00,22.22,19.0,17.4,0.197,4.639 
2017-06-24 16:00,22.42,19.0,17.3,0.134,5.93 
2017-06-24 15:10,22.30,19.0,17.1,0.134,5.472 
2017-06-24 13:00,21.92,19.0,17.1,0.096,4.229 
2017-06-24 12:45,22.03,19.0,17.1,0.096,4.152 
2017-06-24 17:45,22.07,21.0,17.0,0.144,6.472 
2017-06-24 19:40,23.01,21.0,16.9,0.318,8.503 
2017-06-24 18:25,21.90,21.0,16.9,0.15,6.814 
2017-06-24 11:25,23.51,19.0,16.7,0.087,3.689 
2017-06-24 11:20,23.57,19.0,16.7,0.087,3.615 

  • -t, - Feldbegrenzer

  • -k4,4 - sortiert nach der 4. Feld nur

  • -nr - sort numerisch in umgekehrter Reihenfolge

+1

Eine richtige, sachdienliche Antwort (+1), aber man konnte schon erwähnt, dass 'sort' fehlschlagen kann, wenn die Datendatei enthält' "zitierte Strings, die Kommas (oder sogar Zeilenumbrüche) enthalten können" '. Eine allgemeinere Lösung sollte das Parsen der Daten beinhalten. – gboffi

+0

@gboffi, für ideale und komplexe Eingaben würde es eine andere komplexe Lösung geben. Für die aktuelle Eingabe, wird einfach 'sort 'die Arbeit – RomanPerekhrest

+0

@romanperekhrest Ihre Antwort funktioniert wie ein Charme! Vielen Dank. – wtrdk

Verwandte Themen