Unix awk,标志函数,多个if条件

Unix awk,标志函数,多个if条件

我有一个很大的文档,并且我正在使用 flag 命令在两种模式下工作:

/Nodes/ {f=1} /EndNodes/ {f=0}

我得到了所需的输出,现在我必须对其进行过滤以获得 20、31 和 32 作为输出。我正在使用这个命令:

{if ($2 + 0 >= 0 && $3 + 0 == 0 && max = $4)
{print $1}}

但我得到这个结果:

20,31,32,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34。

请注意,从 18 到 34 的数字满足条件max = $4。有什么建议么?

答案1

正如 Steeldriver 指出的那样,单个=是一种赋值操作,它会产生一个值——您要分配的值。如果该值为正(如数字 18 到 34 所示),则赋值价值是正数,这在 awk 中是“true”。

只需更改max = $4为,max == $4使其成为比较测试而不是作业。

相关内容