Я использую 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.b9 а 1.1 - последней строкой, тогда как как бы до 1.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' не позволяют вам выполнять числовую сортировку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .