2017-06-25 10 views
3

4列目の温度を含むCSVをソートしようとします。あなたが見ることができるように特定の列でcsvをソートする方法

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 

第四列が正しくソートされていません。

Sort -n -k4 temperature.csv 

は、結果として、私はこれを得ます。私は最初の行で17.5、最後の行で16.7を期待します。

Iはまた、この試みた:結果は前の例とまったく同じである

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

を。 誰も私にヒントを与えることができますか?

答えて

3

sortコマンドを使用します。

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

出力:

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, - フィールド区切り

  • を- ソート数値逆の順序で

+1

正しい、便利な答え(1)がありますが、データファイルは、 'が含まれている場合は、' sort'が失敗する可能性があることに言及できた - 第四フィールドでソートするだけ

  • -nr "引用符で囲まれた文字列で、カンマ(または改行)を含むことがあります。より一般的な解決策には、データの解析が必要です。 – gboffi

  • +0

    @ gboffi、理想的で複雑な入力については、もう一つ複雑な解決策があります。現在の入力に対しては、単純な 'ソート'がジョブを実行します – RomanPerekhrest

    +0

    @romanperekhrestあなたの答えは魅力的に機能しました!ありがとうございました。 – wtrdk

    関連する問題