Classificando o número float e o awk

1

Considere o seguinte arquivo foo.dat com 11 colunas:

  893    1  754  946  193   96   96     293.164     293.164     109.115     70.8852
  894    1  755  946  192   95   96     291.892     292.219     108.994      70.821
  895    1  755  947  193   95   97     290.947     291.606     109.058     70.5709
  896    1  755  947  193   95   97     290.002     290.663     109.122     70.5053
  897    1  755  948  194   95   98     289.057     290.057     109.187     70.2532
  898    1  754  949  196   96   99     288.444     289.456      109.44          70
  899    1  754  950  197   96  100     287.501     288.862     109.506     69.7458
  900    1  754  949  196   96   99     286.559     287.578     109.573     69.8637

Gostaria de filtrar as colunas 11 e 9 e imprimi-las apenas em um arquivo, mas em ordem crescente na primeira nova coluna , ou seja, após imprimir as colunas 11 e 9, classifique as colunas saída por regra numérica.

Eu tentei

awk  -F' ' '{printf "%-12s%-12s\n", $11, $9}' foo.dat | sort -g 

mas a saída é estranha em torno de 70 . É

70.2532 290.057
70 289.456
70.5053 290.663

Por que 70 não é anterior a 70.2532 ? Parece que . está sendo ignorado.

    
por Sigur 08.04.2017 / 00:24

1 resposta

5

Eu suspeito que você tenha uma localidade usando uma vírgula como separador decimal. Isso deve corrigir esse problema:

awk  -F' ' '{printf "%-12s%-12s\n", $11, $9}' foo.dat | LC_ALL=C sort -g
    
por 08.04.2017 / 01:05