1

这是问题所在:

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”形式的值中。它也具有与排序选项“-g”相同的奇怪结果。

有没有人知道它为什么这样做,以及如何更正排序......?

4

1 回答 1

4

如果您使用 GNU 排序,则需要使用-g而不是-n对浮点值进行排序。-n仅适用于整数。

很可能,您的问题是您的语言环境未设置为C语言环境。许多语言环境设置会干扰数字排序,尤其是浮点数(某些语言环境希望将逗号视为小数分隔符)。尝试这个:

LC_COLLATE= sort -g

如果您使用不同的排序,则需要阅读其文档。

于 2013-10-23T14:26:59.830 回答