首页 > 解决方案 > 如何对 CSV 文件中的多列进行排序

问题描述

我有以下格式的文件。我需要先按最大代码排序,然后按最大值列排序。

 colour,letter,code,value
    red,r,016,949.8
    red,r,015,603.9
    red,r,014,348.4
    blue,b,016,362.29
    blue,b,015,460.2
    blue,b,014,9850.9

output:
    red,r,016,949.8
    blue,b,016,362.29
    red,r,015,603.9
    blue,b,015,460.2
    blue,b,014,9850.9
    red,r,014,348.4

我的实现

sort  -k3,3n -r  -k4,4n -t \t data.csv  

当我尝试这样做时,它会对文件进行排序,但不会对前两列进行排序。

标签: bashshellunix

解决方案


目前尚不清楚该文件是 TSV(制表符分隔)还是 CSV(逗号分隔)。问题表示 CSV,但使用制表符分隔符 ( -t \t) 回答。尝试-t,CSV。此外,需要将相反的顺序应用于每个键(每个键上的“r”后缀)。

sort -k3,3nr -k4,4nr -t, data.csv

推荐阅读