gpt4 book ai didi

linux 按数字顺序按多个定界符排序

转载 作者:太空狗 更新时间:2023-10-29 12:12:51 25 4
gpt4 key购买 nike

我有按第二列排序的数据,但它们不是我所期望的。

0:1, 0:0,
0:2, 0:0,
1:1, 0:1,
1:2, 0:1,
0:11, 0:10,
0:12, 0:10,
0:12, 0:11,
0:13, 0:11,
... (omit text) ...
1:192, 0:192,
2:192, 0:192,
0:3, 0:2,
0:4, 0:2,
... (omit text) ...
11:63, 9:63,
12:63, 9:63,
10:10, 9:7,
10:7, 9:7,
6:10, 9:7,
6:8, 9:7,
...

使用 sort -t',' -k2,2 text.txt 对数据进行排序。我想按第二列对它们进行数字排序,但 0:3, 0:2 紧跟在 2:192, 0:192 之后。此外,第一列未按数字顺序排序,因为 10:7, 9:7, 之后是 10:10, 9:7

我想先按第二列然后按第一列对数据进行数字排序。在第二列中,第一个数字在第二个数字之前,例如 2:192, 0:192 后面是 11:63, 9:63。第一列也是如此。我可以使用什么样的命令来获得如下所示的结果?

0:1, 0:0,
0:2, 0:0,
1:1, 0:1,
1:2, 0:1,
0:3, 0:2,
0:4, 0:2,
0:11, 0:10,
0:12, 0:10,
0:12, 0:11,
0:13, 0:11,
... (omit text) ...
1:192, 0:192,
2:192, 0:192,
... (omit text) ...
6:8, 9:7,
6:10, 9:7,
10:7, 9:7,
10:10, 9:7,
11:63, 9:63,
12:63, 9:63,
...

最佳答案

首先,将冒号转换为逗号,以便您可以指定一个分隔符进行排序。

tr : ,

然后,按四列数字排序(注意 n)

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

最后,将后面没有空格的逗号转换回冒号:

sed 's/,\([^ ]\)/:\1/g'

或者,作为单个管道:

tr : , < input \
| sort -t, -k3,3n -k4,4n -k1,1n -k2,2n \
| sed 's/,\([^ ]\)/:\1/g'

关于linux 按数字顺序按多个定界符排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36009246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com