如果一个(或多个)值为零,则不打印重复项

Bob*_*Bob 1 bash awk

我的输入文件内容是:

Header1    Header2
a    2
a    7
b    2
b    5
c    4
c    0
c    5
Run Code Online (Sandbox Code Playgroud)

现在,只有当任何重复项的值为零(在 B 列中)时,我才想删除 A 列中的重复项。所以,对于上面的例子,输出应该是:

Header1    Header2
a    2
a    7
b    2
b    5
Run Code Online (Sandbox Code Playgroud)

我已经使用 awk 在第二列中找到 0:

 awk '$2 != 0' file
Run Code Online (Sandbox Code Playgroud)

但它打印

Header1    Header2
a    2
a    7
b    2
b    5
c    4
c    5
Run Code Online (Sandbox Code Playgroud)

如果一个(或多个)值为零,我如何省略打印重复项?谢谢!

anu*_*ava 6

你可以使用这个awk

awk 'FNR == NR{ if($2 == 0) skip[$1]; next } !($1 in skip)' file file
Run Code Online (Sandbox Code Playgroud)

Header1    Header2
a    2
a    7
b    2
b    5
Run Code Online (Sandbox Code Playgroud)