首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用" Sort“命令按列优先级对CSV文件进行排序

使用" Sort“命令按列优先级对CSV文件进行排序
EN

Stack Overflow用户
提问于 2012-02-28 03:36:16
回答 4查看 119.8K关注 0票数 111

我有一个csv文件,我想按列优先级对它进行排序,比如"order by“。例如:

代码语言:javascript
复制
3;1;2
1;3;2
1;2;3
2;3;1
2;1;3
3;2;1

如果这种情况是"select“的结果,"order by”将如下所示: order by column2,column1,column3 -结果将是:

代码语言:javascript
复制
2;1;3
3;1;2
1;2;3
3;2;1
1;3;2
2;3;1

我想知道如何在Unix上使用"sort“命令获得相同的结果。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-02-28 03:39:15

代码语言:javascript
复制
sort --field-separator=';' --key=2,1,3
票数 176
EN

Stack Overflow用户

发布于 2015-01-05 23:56:19

假设您的unsorted.csv文件中有另一行3;10;3。那么我猜你希望得到一个数字排序的结果:

代码语言:javascript
复制
2;1;3
3;1;2
1;2;3
3;2;1
1;3;2
2;3;1
3;10;3

而不是按字母顺序排序的:

代码语言:javascript
复制
2;1;3
3;1;2
3;10;3
1;2;3
3;2;1
1;3;2
2;3;1

要实现这一点,您必须使用-n

代码语言:javascript
复制
sort --field-separator=';' -n -k 2,2 -k 1,1 -k 3,3 unsorted.csv

值得一提的是,必须使用2,2。如果只使用2,则sort会将字符串从域2的开头一直带到末尾。2,2确保只使用字段2

票数 33
EN

Stack Overflow用户

发布于 2013-02-02 00:04:41

在Cygwin (sort version 2.0,GNU textutils)上,上面的答案对我不起作用,下面的答案起作用了:

代码语言:javascript
复制
sort -t"," -k2 -k1 -k1
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9471101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档