Como faço para transformar a saída da matriz classificada em ordem lexicográfica para ordem numérica

1

Eu tenho um arquivo de texto que consiste em dados neste formulário:

int array[0]
int array[1001]
int array[1002]
int array[1003]
int array[2]
int array[2001]
int array[2002]
...

Em outras palavras, os números parecem estar listados em algum tipo de ordenação lexicográfica. Quero classificar o arquivo para que seu conteúdo seja o seguinte:

int array[0]
int array[1]
int array[2]
int array[3]
int array[4]
int array[5]
int array[6]
...

Como eu realizaria essa transformação de classificação? sort não parece ser suficiente para a tarefa.

    
por Caleb 16.02.2015 / 02:34

2 respostas

2

Você pode sort numericamente no delimitador [ :

sort -t\[ -nk2,2 <<\IN
int array[0]
int array[1001]
int array[1002]
int array[1003]
int array[2]
int array[2001]
int array[2002]
IN 

OUTPUT

int array[0]
int array[2]
int array[1001]
int array[1002]
int array[1003]
int array[2001]
int array[2002]
    
por 16.02.2015 / 02:40
1

Para situações em que você tem texto e números, uma alternativa é o --version-sort

sort -V
    
por 19.02.2015 / 13:44