我试图用这样的数值对一个文件进行排序:
414e-05
435e-05
0.5361
0.7278
0.1341
0.9592
0.2664
使用sort对所有的numers进行排序,除了带有指数的那些,是否有一些方法可以使用sort函数来计算这个表达式?
答案 0 :(得分:33)
如果你的sort命令版本足够新,它应该支持 -g 选项(或 - general-numeric-sort)如果你喜欢你的选择长)。在信息手册中对此进行了描述:
使用标准C函数
strtod
以数字方式排序 将每行的前缀转换为双精度浮点 数。这允许在科学中指定浮点数 符号,如'1.0e-34'和'10e100'。
答案 1 :(得分:3)
perl -e 'print sort { $a<=>$b } <>' < input-file
答案 2 :(得分:2)
如果您没有sort -g
,则可以选择scisort
。
答案 3 :(得分:2)
我没有足够的代表。发表评论,所以我写这是为了补充公认的答案:
对于那些使用逗号而不是句点来表示小数的语言环境的人,如HongboZhu指出的那样,对小数的排序将无法正常工作
解决方案:使用类似以下命令(重要的是LC_ALL = C)时,使用带句点分隔的数字对列表进行排序会正常工作:
ls yourFolder|LC_ALL=C sort -g
此解决方案来自以下帖子: https://unix.stackexchange.com/questions/506965/bash-sort-g-does-not-work-properly