![浮動小数点数のソートとawk](https://rvso.com/image/109208/%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0%E3%81%AE%E3%82%BD%E3%83%BC%E3%83%88%E3%81%A8awk.png)
foo.dat
11 列の次のファイルを考えてみます。
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
列11と9をフィルタリングしてファイルに印刷したいのですが、最初の新しい列の昇順つまり、11 列と 9 列を印刷した後、出力を数値規則でソートします。
私は試した
awk -F' ' '{printf "%-12s%-12s\n", $11, $9}' foo.dat | sort -g
しかし、出力は奇妙です70
。それは
70.2532 290.057
70 289.456
70.5053 290.663
なぜ70
以前はそうではないのですか70.2532
?.
無視されているようです。
答え1
おそらく、小数点としてコンマを使用するロケールを使用していると思われます。この問題は次のように修正されるはずです:
awk -F' ' '{printf "%-12s%-12s\n", $11, $9}' foo.dat | LC_ALL=C sort -g