问题在于:
echo -e " 1.0101010101010102 Ok \n
1.00 Ok \n
1.010204081632653 Ok \n
1.010752688172043 Ok \n
1.0 FAIL \n
1.010989010989011 Ok"
| sort -n
返回
1.00 Ok
1.0101010101010102 Ok
1.010204081632653 Ok
1.010752688172043 Ok
1.010989010989011 Ok
1.0 FAIL
显然,只有“i.0”-form值才会出现错误。排序选项“-g”也有同样奇怪的结果。
有没有人知道为什么会这样做,以及如何纠正排序......?
答案 0 :(得分:4)
如果您使用的是GNU排序,则需要使用-g
而不是-n
来排序浮点值。 -n
仅适用于整数。
最有可能的问题是,您的区域设置未设置为C
区域设置。许多区域设置会干扰数字排序,特别是浮点数(某些区域设置希望将逗号视为小数分隔符)。试试这个:
LC_COLLATE= sort -g
如果您使用其他类别,则需要阅读其文档。