如何使用GNU排序显式地对正数和负数进行排序



给定一个包含以下数字的文件:

+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

应该做到这一点。-eecho解释转义序列。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

相关内容

  • 没有找到相关文章

最新更新