![對浮點數和 awk 進行排序](https://rvso.com/image/109208/%E5%B0%8D%E6%B5%AE%E9%BB%9E%E6%95%B8%E5%92%8C%20awk%20%E9%80%B2%E8%A1%8C%E6%8E%92%E5%BA%8F.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