awk针对该条件进行打印

awk针对该条件进行打印,awk,Awk,我有一个简单的问题,但我想不出来 我有一个文件,我想打印与我在awk if条件中指定的条件不匹配的所有行。但我可以打印条件,其他条件如何工作 这是我的代码: awk '{if ($18==0 && $19==0 && $20==0 && $21==0) print $0}' file 我也试过: awk '{if !($18==0 && $19==0 && $20==0 && $21==0) pri

我有一个简单的问题,但我想不出来

我有一个文件,我想打印与我在awk if条件中指定的条件不匹配的所有行。但我可以打印条件,其他条件如何工作

这是我的代码:

awk '{if ($18==0 && $19==0 && $20==0 && $21==0) print $0}' file
我也试过:

awk '{if !($18==0 && $19==0 && $20==0 && $21==0) print $0}' file
但是第二个不起作用,任何帮助都是非常感谢的。谢谢。

否定(
)需要在括号内:

awk '{if (!($18==0 && $19==0 && $20==0 && $21==0)) print $0}' file
我们在里面加了另一套来包装所有的东西

(仅供参考,如果您给出了它如何“不起作用”(即,
上的语法错误,这会更有帮助。请记住在将来的问题中包含错误消息或某些不起作用的症状!)

否定(
)需要在括号内:

awk '{if (!($18==0 && $19==0 && $20==0 && $21==0)) print $0}' file
我们在里面加了另一套来包装所有的东西


(仅供参考,如果您给出了它如何“不起作用”(即,
上的语法错误,这会更有帮助。请记住在将来的问题中包含错误消息或某些不起作用的症状!)

您还可以反转您的条件语句:

你想要的是相反的:

awk '{if ($18==0 && $19==0 && $20==0 && $21==0) print $0}' file
可以是:

awk '{if ($18!=0 || $19!=0 || $20!=0 || $21!=0) print $0}' file


例如:

!cat file
A 0 0 0
B 1 1 1
C 1 0 1

awk '$2+$3+$4!=0' file
B 1 1 1
C 1 0 1

awk '{if ($2!=0 || $3!=0 || $4!=0) print $0}' file
B 1 1 1
C 1 0 1

awk '{if (!($2==0 && $3==0 && $4==0)) print $0}' file
B 1 1 1
C 1 0 1

awk '{if (!($2==0 || $3==0 || $4==0)) print $0}' file
B 1 1 1

您还可以反转您的条件语句:

你想要的是相反的:

awk '{if ($18==0 && $19==0 && $20==0 && $21==0) print $0}' file
可以是:

awk '{if ($18!=0 || $19!=0 || $20!=0 || $21!=0) print $0}' file


例如:

!cat file
A 0 0 0
B 1 1 1
C 1 0 1

awk '$2+$3+$4!=0' file
B 1 1 1
C 1 0 1

awk '{if ($2!=0 || $3!=0 || $4!=0) print $0}' file
B 1 1 1
C 1 0 1

awk '{if (!($2==0 && $3==0 && $4==0)) print $0}' file
B 1 1 1
C 1 0 1

awk '{if (!($2==0 || $3==0 || $4==0)) print $0}' file
B 1 1 1
在这里,您可以执行以下操作:

awk '$18+$19+$20+$21!=0' file
不需要打印$0,因为它是默认操作。

这里您可以执行以下操作:

awk '$18+$19+$20+$21!=0' file

print$0
是不需要的,因为它的默认操作。

谢谢!我刚才也可以这样解决它:awk'{if($18==0&&$19==0&&$20==0&&$21==0)next;else print$0;}'file@user1945881您可以
awk'!(a&&b&&&…)'文件
谢谢!我刚才也可以这样解决它:awk'{如果($18==0&&$19==0&&$20==0&&$21==0)下一步;否则打印$0;}'file@user1945881您可以
awk'!(a&&b&&&…)'file
这将不起作用,因为如果满足其中任何一个条件,它将打印,而不是所有条件都满足,它将打印。是的,它会打印!您可能误解了这个问题!是否希望在所有条件都匹配时打印,还是仅在其中一个条件匹配时打印?这将不起作用,因为如果满足其中任何一个条件,它将打印,而不是在所有条件都满足时打印。是的,它会打印!您可能有misun理解这个问题!如果所有条件都匹配,还是只匹配其中一个条件,您希望打印它?