如何对这种输入进行排序?
0.00159265291648695254
-0.00318530179313823899
0
0.00999983333416666468
0.00362937767285478371
0.00477794259012844049
-0.00637057126765263261
0.00681464007477014026
-0.00840724736714870645
-0.00522201549675090458
无论是 sort -n data
还是 sort -g data
都会产生这个:
0
0.00159265291648695254
-0.00318530179313823899
0.00362937767285478371
0.00477794259012844049
-0.00522201549675090458
-0.00637057126765263261
0.00681464007477014026
-0.00840724736714870645
0.00999983333416666468
另一方面,-1.whatever
会在零前面。我需要排序来注意减号。谢谢。
最佳答案
所有这些麻烦都影响了我的本地设置。我的 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
关于Linux 排序不适用于负 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10031156/