
Betrachten Sie die folgende foo.dat
Datei 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 70
steht 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