根据条件awk / bash删除重复项

时间:2013-08-26 13:56:58

标签: bash awk duplicates

我想从具有3列

的数据集中删除重复项
A       0   3238
B       0   3367
C       0   3130
D       1   3130

我需要删除第三列中包含重复值的行,但优先保留第二列中值为“1”的行。我知道如何使用awk删除重复项,但我无法弄清楚如何添加条件语句。

谢谢

2 个答案:

答案 0 :(得分:3)

试试这行:

awk '{if($3 in a)a[$3]=$2==1?$0:a[$3];else a[$3]=$0}END{for(i in a)print a[i]}' file

答案 1 :(得分:3)

$ sort -k2nr file | awk '!seen[$3]++'
D       1   3130
A       0   3238
B       0   3367