UNIX 用指数值排序?

发布于 2024-12-04 07:34:46 字数 376 浏览 4 评论 0原文

我有一个包含 7 个数据字段的 csv 文件。我想按相反的数字顺序对第七个字段进行排序(首先是最小值)。数据的第 7 个字段如下所示:

0.498469643137
1
6.98112003175e-10
9.11278069581e-06

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

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

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

I have a csv file with 7 fields of data. I want to sort the 7th field in reverse numerial order (smallest values first). The 7th field of data looks like this:

0.498469643137
1
6.98112003175e-10
9.11278069581e-06

I have tried to use the UNIX sort tool like this:

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

The problem I am having is that sort does not recognize exponential form. For example, sort thinks 6.98112003175e-10 is larger than 1. How can I use sort to sort a csv column, but recognize the scientific notation? Thanks in advance for the help.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

末骤雨初歇 2024-12-11 07:34:46

使用 '-g' 选项排序应该可以满足您的要求。
-g 选项表示“使用通用数值”进行排序

sort with '-g' option should do the trick for you.
-g option indicates 'use generic numerical value' for sorting

暗恋未遂 2024-12-11 07:34:46

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

就我而言,LANG 设置为 ru_RU.KOI8-R,因此 sort -g 给出了错误的结果。

Please note, that your locale may assume another delimiter:
For example, in russian localization ',' character delimits parts of number rather than '.'. In this case you should take into account the LANG variable.

In my case LANG was set to ru_RU.KOI8-R and so sort -g gave me wrong result.

再浓的妆也掩不了殇 2024-12-11 07:34:46

所以 - 只是给那些不知道如何使用它的人一个例子:你使用“-g”而不是“-n”。
l = 1,0.3,6.01e-10

排序 -t$',' -n example.txt

0.3
1
6.01e-10

排序 -t$',' -g example.txt

6.01e-10
0.3
1

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

最后的乘客 2024-12-11 07:34:46
  1. 您应该使用 -g
  2. 不要使用 -n

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

  1. You should use -g
  2. Don't use -n

The correct command is sort -g -k7,7 input.txt

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文