如何对CSV文件中的多列进行排序

时间:2019-11-01 21:33:31

标签: bash shell unix

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

 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  

当我尝试执行此操作时,它将对文件进行排序,但不会对前两列进行排序。

1 个答案:

答案 0 :(得分:2)

不清楚文件是TSV(制表符分隔)还是CSV(逗号分隔)。问题指示CSV,但使用制表符分隔符(-t \t)回答。尝试-t,获得CSV。另外,还需要对每个键应用相反的顺序(每个键的后缀“ r”)。

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