我有一个包含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列进行排序,但是能够识别科学记数法?在此先感谢您的帮助。
答案 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)
-g
-n
正确的命令是sort -g -k7,7 input.txt