从shell脚本更改CSV排序顺序的快速而简单的方法是什么?

时间:2016-12-15 14:16:59

标签: bash shell sorting csv

我有一些CSV,每条记录有很多列;一些是整数,一些是(短)引用的字符串。所有CSV都具有相同的列(以及列中的数据类型)。假设为了简单起见,列名称为c1,c2,c3,c4。

我的CSV现在按列c1排序,然后是c3,然后是c2(即不是文件中记录字符串的字典顺序);我想按顺序c1-c4-c2对它们进行重新排序。在bash脚本中执行此操作的快速而简单的方法是什么?

注意:

  • 两个订单都是合计,即没有两个记录具有相同的c1,c3和c2,也没有相同的c1,c4和c2组合。
  • 我故意举了一个例子,第一列是订单中的第一列,因为那是我的具体情况,但不管你是否想做出这样的假设,都取决于你。
  • 你可以声称唯一要做的就是用另一种语言写一个程序来做这件事(虽然我当然希望有不同的答案)。
  • 字符串没有转义引号或任何其他疯狂,所以解析很容易。

1 个答案:

答案 0 :(得分:1)

如果没有带引号的逗号,sort就足够了:

sort -t, -k1,1 -k4,4 -k2,2 file.csv > sorted.csv