Sortieren von Float-Zahlen und Awk

Sortieren von Float-Zahlen und Awk

Betrachten Sie die folgende foo.datDatei mit 11 Spalten:

  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

Ich möchte die Spalten 11 und 9 filtern und nur diese in einer Datei ausdrucken, aber inaufsteigende Reihenfolge in der 1. neuen Spalte, d. h., nach dem Drucken von 11 und 9 Spalten sortieren Sie die Ausgabe nach der numerischen Regel.

Ich habe es versucht

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

aber die Ausgabe ist seltsam 70. Es ist

70.2532 290.057
70 289.456
70.5053 290.663

Warum 70steht nicht vorher 70.2532? Sieht aus, als .würde es ignoriert.

Antwort1

Ich vermute, Sie haben ein Gebietsschema, das Kommas als Dezimaltrennzeichen verwendet. Das Folgende sollte das Problem beheben:

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

verwandte Informationen