假设我在文件上运行sort -u
后将两条相邻的行相互比较。我发现它们都从左侧匹配n个字符,然后在某个时刻开始不同意,并且在分歧开始的地方,第一行有一个数字“0”到“9”。第二行有一个非数字。我希望两条线交换位置。我为什么要这个?因为第一行中的数字meand它是一个更长的数字,并且需要落后于另一个,所以这些行,无论数字值如何,都将从此重新排列:
xxxx-xxxx-xxxxxxx.xxxxxxx.xxxx.DD-xx.x.x.x
xxxx-xxxx-xxxxxxx.xxxxxxx.xxxx.D-xx.x.x.x
到此:
xxxx-xxxx-xxxxxxx.xxxxxxx.xxxx.D-xx.x.x.x
xxxx-xxxx-xxxxxxx.xxxxxxx.xxxx.DD-xx.x.x.x
而且:
1
10
11
12
13
14
15
2
3
4
5
6
7
8
9
成为这个:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
因为它强制数字值具有相同的位数 相互比较,从左侧分组的数字越多,数字越少,数字越少。
我的逻辑可能会在某些时候崩溃,但在我可以编码之前,我无法检查返回的结果。所以有人知道如何在bash中这样做吗?
答案 0 :(得分:0)
sort -g
(一般数字排序)应该可以解决问题。