awk if语句检查多个数组

时间:2014-03-25 06:52:38

标签: arrays awk

我有一个这样的文件:

1 1 9
2 2 4
3 2 5
4 2 4

我希望awk根据第二和第三个字段打印唯一记录。这两个字段必须是唯一的才能打印。

理想输出如下:

1 1 9
2 2 4
3 2 5

所以记录4,因为它与记录2相同,被遗漏了。

这就是我的尝试:

cat file | awk ' !($2 in array) && !($3 in barry) { array[$2]; barry[$3]; print}'

运行此命令会导致:

1 1 9
2 2 4

所以它没有添加记录3,因为它的第二个字段与记录2相同。

我如何进行编码,以便awk检查这两个值?

2 个答案:

答案 0 :(得分:3)

这应该做:

awk '!a[$2,$3]++' file
1 1 9
2 2 4
3 2 5

答案 1 :(得分:2)

您可以使用2个值创建索引并进行检查:

awk 'SEEN[ $2 " " $3 ] != 1 { print ; SEEN[ $2 " " $3 ] = 1 }' file