首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unix对多个字段进行排序

unix对多个字段进行排序
EN

Stack Overflow用户
提问于 2011-06-14 09:20:19
回答 2查看 22.6K关注 0票数 15

我尝试按如下方式对文件进行排序:

col1 (升序) col2 (降序) col3 (升序) col4 (降序)

我想使用-k命令,而不是+-语法。我已经知道了如何使用旧的语法:

代码语言:javascript
复制
sort -t " " +0 -1 +2 -3 +4r testfile

但这几乎不是直观的。我还没有想出使用-k选项的正确方法。谢谢。

测试文件如下:

代码语言:javascript
复制
5 3 2 9
3 4 1 7
5 2 3 1
6 1 3 6
1 2 4 5
3 1 2 3
5 2 2 3

结果:

代码语言:javascript
复制
1 2 4 5
3 4 1 7
3 1 2 3
5 3 2 9
5 2 2 3
5 2 3 1
6 1 3 6
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-14 09:29:20

您需要执行以下操作之一:

代码语言:javascript
复制
sort --key=1,1 --key=2,2r --key=3,3 --key=4,4r
sort -k1,1 -k2,2r -k3,3 -k4,4r

如下所示:

代码语言:javascript
复制
pax$ echo '5 3 2 9
3 4 1 7
5 2 3 1
6 1 3 6
1 2 4 5
3 1 2 3
5 2 2 3' | sort --key=1,1 --key=2,2r --key=3,3 --key=4,4r

1 2 4 5
3 4 1 7
3 1 2 3
5 3 2 9
5 2 2 3
5 2 3 1
6 1 3 6

如果希望将它们视为正确的数字(可变长度),请记住提供-n选项,例如:

代码语言:javascript
复制
sort -n -k1,1 -k2,2r -k3,3 -k4,4r
票数 29
EN

Stack Overflow用户

发布于 2011-06-14 09:34:47

sort -n -k 1n -k 2rn -k 3n -k 4rn呢?

-k <FIELD><OPT1><OPT2>...,其中OPT1和OPt2是简单的sort选项,例如n是数字,r是反转

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6338126

复制
相关文章

相似问题

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