Linux 排序不适用于负 float

标签 linux bash unix sorting ubuntu

如何对这种输入进行排序?

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/

相关文章:

linux - 如何根据 bash 查询形成 cron 任务?

regex - 使用 grep 列出以以下开头的行

python - 我应该坚持使用bash来开发高级Linux自动化脚本,还是切换到Python?

linux - 重定向bas​​h for循环的输出

linux - Apache2 运行 perl 脚本作为目录索引

linux - 自定义服务启动在 OLE6 中不起作用。我哪里出错了?

linux - 程序参数中参数扩展的奇怪行为

linux - 如何创建备份脚本来比较日期和删除最旧的文件

linux - sed 在 bash 脚本中不工作

c - 在不关闭工作的情况下重新读取正在/proc 中更新的文件吗?