首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按多列对CSV数据进行排序

按多列对CSV数据进行排序
EN

Stack Overflow用户
提问于 2013-05-16 10:45:40
回答 2查看 520关注 0票数 1

输入文件

代码语言:javascript
复制
1,A,SDF,24,55,55
2,T,AAS,22,12,32
3,TR,SS,14,19,69
4,DD,DD,14,59,39
5,SW,DD,14,39,59
6,SB,DS,12,26,126
7,QQ,SWD,12,19,199
8,QA,DD,12,17,167
9,AA,QQ,10,9,49

期望输出

代码语言:javascript
复制
1,A,SDF,24,55,55
2,T,AAS,22,12,32
3,TR,SS,14,19,69
5,SW,DD,14,39,59
4,DD,DD,14,59,39
7,QQ,SWD,12,19,199
8,QA,DD,12,17,167
6,SB,DS,12,26,126
9,AA,QQ,10,9,49

逻辑:先按第4列进行排序反转,然后按第6列进行反向排序

我试过以下几种方法,但没有起作用

代码语言:javascript
复制
sort -t ',' -nrk 4,6 -s Input_file

sort -t ',' -k 4,4n -k 6,6n Input_file
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-16 10:52:29

我拿到了这个:

代码语言:javascript
复制
kent$  sort -nrt, -k4,4 -k6,6 file                                                                                                                                        
1,A,SDF,24,55,55
2,T,AAS,22,12,32
3,TR,SS,14,19,69
5,SW,DD,14,39,59
4,DD,DD,14,59,39
7,QQ,SWD,12,19,199
8,QA,DD,12,17,167
6,SB,DS,12,26,126
9,AA,QQ,10,9,49
票数 4
EN

Stack Overflow用户

发布于 2013-05-16 11:50:35

您可能对Perl解决方案感兴趣:

代码语言:javascript
复制
print join(',', @$_), "\n" for 
sort { $b->[3] <=> $a->[3] or $b->[5] <=> $a->[5] }
map { chomp; [ split /,/ ] } <>;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16585364

复制
相关文章

相似问题

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