2016-07-26 54 views
1

通过一个awk教程去,我碰到这条线当awk脚本在大括号外包含代码时,这意味着什么?

substr($0,20,5) == "HELLO" {print} 

打印一行是否有“HELLO”字符串起始于20字符。

现在我认为花括号在awk脚本开始时是必要的,并且这个工作可以使用'if',但它仍然没有工作。

有些人可以解释它如何评估?

+1

正如回答指出'{print}'部分在这里是多余的 –

+2

停止猜测语法,并阅读Arnold Robbins编写的Effective Awk Programming第4版。 –

回答

4

如果您有:

{ action } 

...那么该动作在每一行运行。相反,如果您有:

condition { action } 

...然后该操作仅针对条件为真的行运行。


最后,如果你有一个条件,则默认操作为print:因此

NR % 2 == 0 

...将打印每隔一行。


你同样可以拥有多对在一个脚本:

condition1 { action1 } 
condition2 { action2 } 
{ unconditional_action } 

...,也可以有BEGINEND块,这在执行的开始和结束时运行。

相关问题