给定包含以下数字的文件:
+1.4
+12.3
-1.0
-4.2
如何按数字顺序对GNU排序进行排序?
使用-n
或-h
似乎不起作用:+
字符未被正确处理?
$ echo "+1.4\n+12.3\n-4.2\n-1.0" | sort -h
-4.2
-1.0
+12.3
+1.4
感谢。
答案 0 :(得分:3)
在bash中:
echo -e "+1.4\n+12.3\n-4.2\n-1.0" | sort -g
应该做的伎俩。 -e
echo
解释转义序列。 -g
sort
根据一般数值进行比较。
示例输出
$ echo -e "+1.4\n+12.3\n-4.2\n-1.0" | sort -g
-4.2
-1.0
+1.4
+12.3
旁注:在某些shell中,echo -e
是默认行为。检查[ this ] ...
答案 1 :(得分:0)
一个选项是剥离+
字符,排序,然后重新添加。
$ echo "+1.4\n+12.3\n-1.0\n-4.2" \
| sed 's/^\+//' \
| sort -h \n
| sed -E 's/^([^-])/\+\1/
-4.2
-1.0
+1.4
+12.3