gpt4 book ai didi

Bash-是否可以只对一行的一列使用 -uniq ?

转载 作者:行者123 更新时间:2023-11-29 09:02:55 26 4
gpt4 key购买 nike

    1.gui  Qxx  16
2.gu Qxy 23
3.guT QWS 18
4.gui Qxr 21

我想根据第 3 列中的值对文件进行排序,所以我使用:

sort -rnk3 myfile

2.gu Qxy 23
4.gui Qxr 21
3.guT QWS 18
1.gui Qxx 16

现在我必须输出为:(以 3.gui 开头的行已被淘汰,因为以 4.gui 开头的行具有更大的值)

2.gu   Qxy  23
4.gui Qxr 21
1.guT QWS 18

我不能使用 -head 因为我有数百万行而且我不知道在哪里剪切,我想不出使用 -uniq 的方法因为它处理一行作为一个整体,因为我不能告诉 -uniq 查看第一列,所以它计算了一个具有唯一性的行,它输出它 - 这是正常的 -。我知道 -uniq 可以忽略一些字符,但正如您从示例中看到的那样,第一列可能有不同的字符数..

请指教..

最佳答案

试试这个:

sort -rnk3 myfile | awk -F"[. ]" '!a[$2]++'

awk 根据第二列删除重复项。这实际上是删除重复项的著名 awk 语法。在维护第二个字段的记录的地方维护一个数组。每次打印记录之前,都会检查数组中的第二个字段。如果不存在,则打印它,否则将其丢弃,因为它是重复的。这是使用++ 实现的。第一次,当遇到记录时,此++ 自其修复后将计数保持为 0。随后的事件将增加该值,当取反时该值变为假。

关于Bash-是否可以只对一行的一列使用 -uniq ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13583365/

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