AWK,有两列交换的过滤行

时间:2016-01-12 13:56:13

标签: bash awk

我有一个有距离的文件,这些文件是'A到B'和'B到A'。我想过滤掉“B到A”行。我尝试了很多选项,但对awk语法感到困惑。

我试过的一件事是这段代码的变种

awk '!x[$1,$3]++'

我想找到一种方法来打印该行并将'A'和'B'存储为反向列的数组

awk '{if (a[$1,$3]=!0) print $0} a[$3,$1]++'

awk 'a[$1,$3]==0 a[$3,$1]++'

第一个复制除第一个之外的每一行。第二个没有打印线,阵列之间是否需要分隔符?

1 个答案:

答案 0 :(得分:0)

awk救援

根据您的数据更改字段数

$ cat dist
1       5
2       4
3       3
4       2
5       1

$ awk '($2,$1) in a{next} {a[$1,$2]; print}' dist
1       5
2       4
3       3

这也可以写成

$ awk '($2,$1) in a{next} ++a[$1,$2]' dist