2016-07-26 1 views
1

、私は20文字から始まる「HELLO」という文字列がある場合、行を出力し、このラインawkスクリプトの中括弧の外側にコードがあるとはどういう意味ですか? awkのチュートリアルを通って行く

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

に出くわしました。

私は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ブロックを持つことができます。

関連する問題