Classificar colunas alinhadas

1

Eu tenho um programa com saída semelhante a esta

 #         Status   VAL1   VAL2   Description
 1      some text    2.5    4.4   Some long other text
 5    some text 2   14.5    2.0   Some long other text 2
12    some text 3  222.6   24.4   Some long other text 3
19    some text 4    3.4    1.5   Some long other text 4
21    some text 5   55.4   10.6   Some long other text 5
32    some text 6    2.9    9.4   Some long other text 6

Eu gostaria de classificar a coluna VAL2. Eu tentei com sort -k 4 , mas quando há espaços na coluna Status sort , fique confuso.

Existe uma maneira de contornar isso? Talvez para passar um número de caracteres em vez de um número de campo?

    
por gregseth 04.03.2013 / 14:59

1 resposta

2

Classificar com base no deslocamento da coluna:

sort -k1.27g

Observe que o sinal g acima (para classificação numérica geral) não é padrão, portanto, pode não ser suportado pela sua implementação de classificação.

Com essa amostra de dados específica, você pode se safar:

LC_ALL=C sort -k1.27

Isso é feito em uma ordem alfanumérica e use a localidade C para garantir que os espaços à esquerda não sejam ignorados na classificação. Então, por exemplo, [ ]4.4 classifica antes de 24.4 , mesmo que 4 ordene após 2 .

    
por 04.03.2013 / 16:02