2016-07-26 56 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塊,這在執行的開始和結束時運行。

相關問題