我有一个很大的文档,并且我正在使用 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
使其成为比较测试而不是作业。