给定一个包含以下数字的文件:
+1.4
+12.3
-1.0
-4.2
使用GNU排序,如何按数字顺序对其进行排序?
使用-n
或-h
似乎不起作用:+
字符没有得到正确处理?
$ echo "+1.4n+12.3n-4.2n-1.0" | sort -h
-4.2
-1.0
+12.3
+1.4
谢谢。
在bash:中
echo -e "+1.4n+12.3n-4.2n-1.0" | sort -g
应该做到这一点。-e
和echo
解释转义序列。CCD_ 6与CCD_。
样本输出
$ echo -e "+1.4n+12.3n-4.2n-1.0" | sort -g
-4.2
-1.0
+1.4
+12.3
旁注:在某些shell中,echo -e
是默认行为。检查[此]
一个选项是剥离+
字符,进行排序,然后再次添加它们。
$ echo "+1.4n+12.3n-1.0n-4.2"
| sed 's/^+//'
| sort -h n
| sed -E 's/^([^-])/+1/
-4.2
-1.0
+1.4
+12.3