【发布时间】:2018-11-23 11:04:22
【问题描述】:
我是 unix shell 脚本的初学者。我正在尝试根据两列对 csv 文件进行排序。
我的文件如下所示:
sh-4.4$ cat test.csv
603,02,0123456,1111,201806131115
603,20,0123456,1111,201806131115
603,02,9876542,2222,201806131215
603,20,9876542,2222,201806131215
603,02,0123456,1111,201806131117
603,20,0123456,1111,201806131117
我想按第 3 列分组,第 2 列也应按如下顺序排列:
603,20,0123456,1111,201806131115
603,02,0123456,1111,201806131115
603,20,0123456,1111,201806131117
603,02,0123456,1111,201806131117
603,20,9876542,2222,201806131215
603,02,9876542,2222,201806131215
我试着做sort -t',' -k3 -k2 test.csv。这会对第 3 列进行分组,但不会对第 2 列进行排序。其输出如下所示。
603,02,0123456,1111,201806131115
603,20,0123456,1111,201806131115
603,02,0123456,1111,201806131117
603,20,0123456,1111,201806131117
603,02,9876542,2222,201806131215
603,20,9876542,2222,201806131215
我也试过sort -t',' -k3 -rk2 test.csv。然而,这会按我的意愿对第 2 列进行排序,但第 3 列没有按我预期的那样排序。它的输出如下所示。
603,20,9876542,2222,201806131215
603,02,9876542,2222,201806131215
603,20,0123456,1111,201806131117
603,02,0123456,1111,201806131117
603,20,0123456,1111,201806131115
603,02,0123456,1111,201806131115
非常感谢您对此的任何帮助。也欢迎使用 awk 进行排序的建议。
【问题讨论】:
标签: linux csv sorting unix awk