UNIX使用指数值排序?

时间:2011-09-14 13:36:49

标签: unix sorting csv exponent

我有一个包含7个数据字段的csv文件。我想以反向数字顺序排序第7个字段(最小值为第一个)。第7个数据字段如下所示:

0.498469643137
1
6.98112003175e-10
9.11278069581e-06

我试过使用像这样的UNIX排序工具:

$ sort -t"," -n -k -r 7 <my_file>

我遇到的问题是排序不能识别指数形式。例如,排序认为6.98112003175e-10大于1。如何使用sort对csv列进行排序,但是能够识别科学记数法?在此先感谢您的帮助。

4 个答案:

答案 0 :(得分:64)

使用'-g'选项排序应该可以帮到你。 -g选项表示'使用通用数值'进行排序

答案 1 :(得分:7)

请注意,您的区域设置可能会采用另一个分隔符: 例如,俄语本地化“,”字符分隔数字的一部分而不是“.”。在这种情况下,您应该考虑LANG变量。

在我的情况下,LANG设置为ru_RU.KOI8-R,因此sort -g给了我错误的结果。

答案 2 :(得分:2)

So - just to give an example for those who do not know how to use it: instead of "-n" you use "-g". l = 1,0.3,6.01e-10

sort -t$',' -n example.txt

0.3 1 6.01e-10

sort -t$',' -g example.txt

6.01e-10 0.3 1

答案 3 :(得分:0)

  1. 您应该使用-g
  2. 请勿使用-n

正确的命令是sort -g -k7,7 input.txt