在我的文件中,$1
中的每个条目都是重复的,但$2
中的值是唯一的。我想比较$3
中每个重复对的相应值,然后如果$3
值更大,请对相应的行执行awk {print $1,$2}
:
File
A ND 1
B NE 6
C NF 2
A ND_upd 10
B NE_upd 3
C NF_upd 7
期望的输出:
A ND_upd
B NE
C NF_upd
答案 0 :(得分:1)
如果您在column1中的每个重复条目仅出现两次,那么以下内容就足够了:
awk -v OFS="\t" '
($1 in compare) { print ($3 > compare[$1] ? $1 OFS $2 : line[$1]); next }
{ compare[$1] = $3; line[$1] = $1 OFS $2 }
' file
如果column1可以复制2次以上,那么你需要构建一个数组,保持每个重复条目的最大值,并在END
块中打印出来。
awk -v OFS="\t" '
($1 in compare) {
if ($3 > compare[$1]) {
compare[$1] = $3
line[$1] = $1 OFS $2
}
next
}
{
compare[$1] = $3;
line[$1] = $1 OFS $2
key[++idx] = $1
}
END {
for (i=1; i<=idx; i++) print line[key[i]]
}' file
输出:两种情况
A ND_upd
B NE
C NF_upd