Ordenar número flotante y awk

Ordenar número flotante y awk

Considere el siguiente foo.datarchivo con 11 columnas:

  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

Me gustaría filtrar las columnas 11 y 9 e imprimir solo estas en un archivo, pero enorden ascendente en la primera columna nueva, es decir, después de imprimir 11 y 9 columnas, ordene la salida por regla numérica.

Lo intenté

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

pero el resultado es extraño 70. Es

70.2532 290.057
70 289.456
70.5053 290.663

¿Por qué 70no es antes 70.2532? Parece que .lo están ignorando.

Respuesta1

Sospecho que tienes una configuración regional que utiliza una coma como separador decimal. Esto debería solucionar ese problema:

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

información relacionada