gpt4 book ai didi

linux - 使用 Unix 排序对带小数部分的正/负数进行排序

转载 作者:IT王子 更新时间:2023-10-29 00:38:54 26 4
gpt4 key购买 nike

使用 sort (coreutils) 5.2.1

我有以下文件,我想按字段 4 的非整数部分对其进行排序。这可以是负数或正数,也可能具有值 INF。

field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=0.123 field5 field6
field1 field2 field3 tag=4.22 field5 field6
field1 field2 field3 tag=5.77 field5 field6
field1 field2 field3 tag=-1.92 field5 field6
field1 field2 field3 tag=-1.91 field5 field6
field1 field2 field3 tag=INF field5 field6

我希望将其排序为

field1 field2 field3 tag=-1.92 field5 field6
field1 field2 field3 tag=-1.91 field5 field6
field1 field2 field3 tag=0.123 field5 field6
field1 field2 field3 tag=4.22 field5 field6
field1 field2 field3 tag=5.77 field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6

鉴于字段的数字部分位于字符位置 4(假设索引从 0 开始,我不确定这一点),我尝试使用以下选项进行 sort:

  • sort -g -k4.4 输入文件
  • sort -g -k4.5 输入文件
  • sort -n -k4.4 输入文件
  • sort -n -k4.5 输入文件
  • sort -g 输入文件

这些都产生了以下结果,这很接近,但不太正确。幅度排序正确,但我想要最负的值。

field1 field2 field3 tag=0.123 field5 field6
field1 field2 field3 tag=-1.91 field5 field6
field1 field2 field3 tag=-1.92 field5 field6
field1 field2 field3 tag=4.22 field5 field6
field1 field2 field3 tag=5.77 field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6

如何让 sort 正常运行?

FWIW,这里有更多信息:

LANG = en_US.UTF-8
Red Hat Enterprise Linux WS release 4 (Nahant Update 6)

最佳答案

我在 Mac 上,所以它的实现可能略有不同,但我发现这是可行的:

sort -gb -k 4.5,4 输入文件

英语:“排序,以-g一般数字方式,忽略-blanks,文件inputfile 使用第 4-k(c) 列的数据,从该列中的第 5 个元素到数据末尾在4列中"

field1 field2 field3 tag=-1.92 field5 field6
field1 field2 field3 tag=-1.91 field5 field6
field1 field2 field3 tag=0.123 field5 field6
field1 field2 field3 tag=4.22 field5 field6
field1 field2 field3 tag=5.77 field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6
field1 field2 field3 tag=INF field5 field6

关于linux - 使用 Unix 排序对带小数部分的正/负数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19548967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com