我有一个这样的文件:
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检查这两个值?
答案 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