Se você tem o GNU awk
, então a classificação pode ser feita com uma pequena ajuda da matriz especial PROCINFO
:
awk -F '[. ]' '{for(i=1;i<NF+1;i++) a[i][NR]=$i} \
END{PROCINFO["sorted_in"]="@val_num_asc"; \
for(j=1;j<NF+1;j++){ I=0; for(i in a[j]) A[++I][j]=a[j][i]} \
for(i=1;i<NR+1;i++){ printf A[i][1]"."; \
for(j=2;j<NF+1;j++) printf A[i][j]" "; printf "\n"}}' file
O acima pode parecer complicado no começo, mas na verdade é muito simples - ele apenas armazena o arquivo inteiro no array a
, e no final recorre ao array A
como desejado. O principal truque é usar @val_num_asc
, pois queremos classificar as colunas por valores em ordem numérica crescente.
Deve funcionar para qualquer número de linhas e colunas, apenas tenha em mente que o arquivo inteiro é armazenado na memória, portanto, pode ser lento para tabelas grandes.