classificar linhas em um arquivo por número de versão

0

Estou usando o linux e tenho um arquivo como este:

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

Este é realmente o resultado que recebo usando o comando sort, mas como você pode ver, 0.b10 é a primeira linha enquanto eu quero que seja a linha após a linha que começa com 0.b9 e 1.1 é a última linha enquanto eu gostaria que fosse antes de 1.1.1 . Ou seja, eu quero classificá-lo por número de versão.

Existe uma maneira fácil de alcançar o que estou procurando?

    
por Gnijuohz 17.05.2014 / 03:41

1 resposta

1

Não é exatamente o que você está procurando, mas:

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

produz:

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

O decimal e o 'b' impedem que você classifique numericamente.

    
por 17.05.2014 / 04:26