繁体   English   中英

unix 排序多个字段

[英]unix sort multiple fields

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

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

我想使用-k命令,而不是+-语法。 我已经弄清楚如何使用旧语法:

sort -t " " +0 -1 +2 -3 +4r testfile

但这并不直观。 我还没有找到使用-k选项的正确方法。 谢谢你。

这是测试文件:

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

结果:

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

您需要以下之一:

sort --key=1,1 --key=2,2r --key=3,3 --key=4,4r
sort -k1,1 -k2,2r -k3,3 -k4,4r

如以下成绩单:

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选项,例如:

sort -n -k1,1 -k2,2r -k3,3 -k4,4r

那么sort -n -k 1n -k 2rn -k 3n -k 4rn呢?
-k <FIELD><OPT1><OPT2>...其中 OPT1 和 OPt2 是简单的sort选项,例如n是数字, r是反向的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM