Unix Shell基于多个列查找唯一行

时间:2017-10-18 14:29:33

标签: shell unix unique

我正在尝试根据多个列找到唯一的行,但我的代码似乎不起作用。或者至少它设法删除了几乎所有重复。

1    A
2    B
3    C
1    A
2    A
3    B
2    A
3    C
1    C
1    A
2    A
3    B

这是我试过的代码

sort -k1 -k2 TEST.txt | awk -F"\t" '!seen[$1, $2]++'

预期产出:

1    A
1    C
2    A
2    B
3    B
3    C

但输出我得到了:

1    A
1    C
2    A
2    B
3    B
3    B
3    C

我的输出中仍然有3 B的副本。有人可以帮忙吗?我的代码有问题吗?

1 个答案:

答案 0 :(得分:0)

您可以使用sort -u进行排序并获得唯一结果:

sort -u file

1    A
1    C
2    A
2    B
3    B
3    C

使用awk即可:

awk '!seen[$1,$2]++' file | sort