通过 awk 教程,我遇到了这一行
substr($0,20,5) == "HELLO" {print}
Run Code Online (Sandbox Code Playgroud)
如果有从第 20 个字符开始的“HELLO”字符串,则打印一行。
现在我认为大括号在 awk 脚本的开头是必要的,并且需要一个“if”才能使其工作,但它仍然可以工作。
有人可以解释一下它是如何评估的吗?
如果你有:
{ action }
Run Code Online (Sandbox Code Playgroud)
...然后该操作在每一行上运行。相比之下,如果您有:
condition { action }
Run Code Online (Sandbox Code Playgroud)
...然后该操作仅针对条件为真的行运行。
最后,如果您只有一个条件,那么默认操作是print:
NR % 2 == 0
Run Code Online (Sandbox Code Playgroud)
...因此将每隔一行打印一次。
同样,您可以在一个脚本中包含多个对:
condition1 { action1 }
condition2 { action2 }
{ unconditional_action }
Run Code Online (Sandbox Code Playgroud)
...并且还可以有BEGIN和END块,它们在执行开始和结束时运行。