按版本号对文件中的行进行排序

按版本号对文件中的行进行排序

我正在使用 Linux,并且有一个如下文件:

0.b10_to_1.0.txt, 0 , 56 , 14
0.b3_to_0.b6.txt, 5 , 56 , 7
0.b6_to_0.b7.txt, 1 , 17 , 7
0.b7_to_0.b8.txt, 0 , 34 , 14
0.b8_to_0.b9.txt, 1 , 20 , 5
0.b9_to_0.b10.txt, 2 , 139 , 24
1.0_to_1.1.txt, 0 , 0 , 1
1.1.1_to_1.1.2.txt, 1 , 0 , 0
1.1.2_to_1.1.3.txt, 0 , 0 , 0
1.1_to_1.1.1.txt, 0 , 0 , 0

这实际上是我使用命令 sort 得到的结果,但正如您所见,0.b10是第一行,而我希望它是以 开头的行之后的行0.b91.1是最后一行,而我希望它位于 之前1.1.1。也就是说,我想按版本号对其进行排序。

有没有简单的方法可以实现我想要的?

答案1

这并不是您想要的,但是:

sed 's/[.b]//g' <yourfile> | sort -n 

生成:

03_to_06txt, 5 , 56 , 7
06_to_07txt, 1 , 17 , 7
07_to_08txt, 0 , 34 , 14
08_to_09txt, 1 , 20 , 5
09_to_010txt, 2 , 139 , 24
010_to_10txt, 0 , 56 , 14
10_to_11txt, 0 , 0 , 1
11_to_111txt, 0 , 0 , 0
111_to_112txt, 1 , 0 , 0
112_to_113txt, 0 , 0 , 0

小数点和“b”阻止您按数字排序。

相关内容