Ordenar uma tabela baseada em uma coluna com string misturada com números no bash

0

Eu tenho um arquivo txt com a tabela abaixo

3-6-13  0.0712  ./13-t.xyz
3-6-13  0.0717  ./2-t.xyz
3-6-13  0.3737  ./6-t.xyz
3-6-13  0.5862  ./5-t.xyz
3-6-13  0.7503  ./4-t.xyz

Como posso classificá-lo com base na terceira coluna como:

3-6-13  0.0717  ./2-t.xyz
3-6-13  0.7503  ./4-t.xyz
3-6-13  0.5862  ./5-t.xyz
3-6-13  0.3737  ./6-t.xyz
3-6-13  0.0712  ./13-t.xyz

infelizmente não posso usar a opção -v de ordenação;

sort -v -k 3 out.tmp

alguma outra solução por awk sed ou etc?

    
por Raymond Ghaffarian Shirazi 30.01.2018 / 14:11

1 resposta

1

Você pode usar uma transformação Schwartzian: extraia o número em um campo separado, classifique-o e remova-o

$ sed -r 's/(.*\/)([0-9]+)/ /' table.txt | sort -n -k1,1 | cut -d" " -f2-
3-6-13  0.0717  ./2-t.xyz
3-6-13  0.7503  ./4-t.xyz
3-6-13  0.5862  ./5-t.xyz
3-6-13  0.3737  ./6-t.xyz
3-6-13  0.0712  ./13-t.xyz
    
por 30.01.2018 / 15:13