我希望该-g
标志告诉sort
将字段视为浮点数,但是:
cat << EOF | sort -g -k1,2
0 0
0 1.0
0 .5
0 5.0
EOF
给出
0 0
0 1.0
0 .5
0 5.0
因此.5
不被视为0.5
。这是一个已知错误还是什么?
附言:我不是在寻求解决方法,我已经解决了sed
我希望该-g
标志告诉sort
将字段视为浮点数,但是:
cat << EOF | sort -g -k1,2
0 0
0 1.0
0 .5
0 5.0
EOF
给出
0 0
0 1.0
0 .5
0 5.0
因此.5
不被视为0.5
。这是一个已知错误还是什么?
附言:我不是在寻求解决方法,我已经解决了sed
当您执行 时
sort -g -k1,2
,从键 1 到键 2 的整个文本将被视为一个字段。因此 sort 尝试解析的文本是0 0
、0 1.0
等,而不是0
、0
单独或0
、1.0
单独。它与前导零无关(除非它影响字典排序)。您可以使用其他浮点格式来检查这一点。以这个输入为例:我们得到:
显然它正在对
1.1e-1
和进行字典排序1.0
。您需要的是将每个字段分别设置为键:
或者:
然后我们得到了预期的顺序: