Linuxsorting不适用于负数浮点数

如何对这种input进行sorting

0.00159265291648695254 -0.00318530179313823899 0 0.00999983333416666468 0.00362937767285478371 0.00477794259012844049 -0.00637057126765263261 0.00681464007477014026 -0.00840724736714870645 -0.00522201549675090458 

无论哪种sort -n datasort -g data procudes:

 0 0.00159265291648695254 -0.00318530179313823899 0.00362937767285478371 0.00477794259012844049 -0.00522201549675090458 -0.00637057126765263261 0.00681464007477014026 -0.00840724736714870645 0.00999983333416666468 

另一方面-1.whatever在零之前。 我需要注意这些减号。 谢谢。

Solutions Collecting From Web of "Linuxsorting不适用于负数浮点数"

所有这些麻烦都做了我的本地设置。 我的Ubuntu的是在捷克:

 $ echo $LANG cs_CZ.UTF-8 

在本地设置它不是一个小数点,而是一个十进制逗号分隔其余整数(正如我们在数学课中所认为的,在我们的语言中,我们确实写了逗号而不是一个点)。

因此:

 echo '0,03 >> 0,4 > > -0,3 > > 0' | sort -n > 0 > -0,3 > > 0,4 > 0,03 > 

如果您正在编写bash脚本,请将排序例程设置为使用“正常”设置。

 export LC_ALL=C 

这个问题可能在你的排序命令中。 如果我运行相同的结果是预期的:

 $ echo '0.00159265291648695254 > -0.00318530179313823899 > 0 > 0.00999983333416666468 > 0.00362937767285478371 > 0.00477794259012844049 > -0.00637057126765263261 > 0.00681464007477014026 > -0.00840724736714870645 > -0.00522201549675090458' | sort -n -0.00840724736714870645 -0.00637057126765263261 -0.00522201549675090458 -0.00318530179313823899 0 0.00159265291648695254 0.00362937767285478371 0.00477794259012844049 0.00681464007477014026 0.00999983333416666468 

如果不使用它,你应该使用GNU排序

 sort (GNU coreutils) 5.93 Copyright (C) 2005 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the extent permitted by law. Written by Mike Haertel and Paul Eggert.