gpt4 book ai didi

sorting - 排序并保留具有最高值(value)的唯一副本

转载 作者:行者123 更新时间:2023-12-03 03:00:14 30 4
gpt4 key购买 nike

我有一个如下所示的文件,我想保留第三个字段上具有最高值的第一个和第二个字段之间的组合(带有箭头的文件,箭头不包含在实际文件中) 。

1   1   10
1 1 12 <-
1 2 6 <-
1 3 4 <-
2 4 32
2 4 37
2 4 39
2 4 40 <-
2 45 12
2 45 15 <-
3 3 12
3 3 15
3 3 17
3 3 19 <-
3 15 4
3 15 9 <-
4 17 25
4 17 28
4 17 32
4 17 36 <-
4 18 4 <-

为了有这样的输出:

1   1   12
1 2 6
1 3 4
2 4 40
2 45 15
3 3 19
3 15 9
4 17 36
4 18 4

我想也许我只是玩弄了 sortuniq 命令,但我搞砸了。

有什么想法吗?

非常重要的注意事项:条目从一开始就没有整齐地排序,我只是使用了 sort -k1,1 -k2,2 -k3,3

先谢谢大家了

最佳答案

这有点有趣,但是:

sort -nr myfile.txt | rev | uniq -f1 | rev | sort -n

输出:

1   1   12
1 2 6
1 3 4
2 4 40
2 45 15
3 15 9
3 3 19
4 17 36
4 18 4

工作原理:

  • 按数字反向排序,将最高的值放在顶部(以便保存它们)
  • 反转每一行,因此最后一个字段位于第一个(uniq 需要)
  • 仅保存第一个 uniq 行,但忽略第一个字段(是最后一个字段)
  • 将线反转回原来的顺序
  • 再次从低到高对行进行排序

可能不是世界上最高效的,但至少每一步都有意义。

关于sorting - 排序并保留具有最高值(value)的唯一副本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22822465/

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