gpt4 book ai didi

linux - AWK 根据两个条件去除重复行

转载 作者:太空狗 更新时间:2023-10-29 12:14:00 25 4
gpt4 key购买 nike

我正在尝试根据第二个字段的值删除重复项。应保留第二个字段的较低值,应删除任何具有重复的第一个字段和较高的第二个字段的行。

这是我的原始数据的一个例子:

1234     2     ABCD
3234 1 DEFG
1234 1 DEFG

它应该是这样的:

1234     1   DEFG
3234 1 DEFG

到目前为止,基于this post :我想出了这个脚本:

awk '{
if($1 in a){
if($2 < a[$1]){
a[$1]= $2;
r[$1]=$0;
} else {
a[$1]=$2;
r[$1]=$0;
}
}
} end {for(x in r) print r[x]}'

但是没有返回任何结果。

我仍在学习如何使用 awk,尤其是关联数组。

欢迎任何帮助。提前致谢!

最佳答案

你可以使用这个 awk:

awk '!($1 in a) || $2 < a[$1] {a[$1]=$2; r[$1]=$0} END {for (i in r) print r[i]}' file
1234 1 DEFG
3234 1 DEFG

关于linux - AWK 根据两个条件去除重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32124270/

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