我有一个两列的大文件,我想根据第2列中的重复条目删除该行。我想删除这两个重复条目。

我试过了:

awk '!seen[$2]++' filename

但是它仅删除一个重复项。

输入文件示例:
1  3
2  3
4  10
1  6
5  3

预期产量:
4  10
1  6

最佳答案

$ awk 'NR==FNR{cnt[$2]++; next} cnt[$2]==1' file file
4  10
1  6

或如果您无法两次读取输入(例如,如果它来自管道),则:
$ awk '{rec[NR]=$0; key[NR]=$2; cnt[$2]++} END{for (i=1; i<=NR; i++) if (cnt[key[i]] == 1) print rec[i]}' file
4  10
1  6

关于awk - 删除第2列中包含重复条目的所有行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56896595/

10-12 15:04