unix 对多个字段进行排序

发布于 2024-11-15 15:52:50 字数 427 浏览 0 评论 0原文

我试图按如下方式对下面的文件进行排序:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

冷心人i 2024-11-22 15:52:50

您需要以下之一:

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

You need one of:

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

as in the following transcript:

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

Remember to provide the -n option if you want them treated as proper numbers (variable length), such as:

sort -n -k1,1 -k2,2r -k3,3 -k4,4r
吻安 2024-11-22 15:52:50

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 simply sort options, for example n is numeric, r is reverse

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文