unix 对多个字段进行排序
我试图按如下方式对下面的文件进行排序:
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
I'm trying to sort the file below as follows:
col1 (Ascending) col2 (Descending) col3 (Ascending) col4 (Descending)
I want to use the -k
command, not the +-
syntax.
I've figured out how to use the old syntax:
sort -t " " +0 -1 +2 -3 +4r testfile
but it's hardly intuitive.
I haven't figured out the right way to use the -k
option. Thank you.
Here's the testfile:
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
Result:
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要以下之一:
如以下记录所示:
如果您希望将它们视为正确的数字(可变长度),请记住提供
-n
选项,例如:You need one of:
as in the following transcript:
Remember to provide the
-n
option if you want them treated as proper numbers (variable length), such as:sort -n -k 1n -k 2rn -k 3n -k 4rn
怎么样?-k...
其中 OPT1 和 OPt2 只是排序
选项,例如n
是数字,r
是相反的What about
sort -n -k 1n -k 2rn -k 3n -k 4rn
?-k <FIELD><OPT1><OPT2>...
where OPT1 and OPt2 are simplysort
options, for examplen
is numeric,r
is reverse