awkユーティリティは入力ファイルを一度に1行読み込みます。awkは、各行ごとにすべてのルールのパターンを試します。複数のパターンがマッチした場合、複数のアクションがawkプログラムで現れる順番に実行されます。パターンがどれにもマッチしない場合は、アクションは実行されません。
行にマッチするすべてのルール(存在しない場合もあり)の処理が終了すると、awkは次の行を読み込みます(注意:see section next文 also)。この動作がファイルの終わりに達するまで続きます。
たとえば、次のawkプログラムには、2つのルールが含まれています。
/12/ { print $0 }
/21/ { print $0 }
1つめのルールは、 パターンとして文字列`12'を持っており、アクションとして`print $0'を持っています。2つめのルールは、パターンとして文字列`21'を持っており、アクションとして`print $0'を持っています。各ルールのアクションは、それぞれカーリーブレースで囲まれています。
この`awk'プログラムは、文字列`12'または文字列`21'を含む行を、すべて表示します。行に両方の文字列が含まれている場合は、各ルールごとに1回、つまり2回表示されます。
次のように、このプログラムをサンプルデータファイルの`BBS-list'と`inventory-shipped'に対して実行すると、
awk '/12/ { print $0 }
/21/ { print $0 }' BBS-list inventory-shipped
次のような出力が得られます。
aardvark 555-5553 1200/300 B alpo-net 555-3412 2400/1200/300 A barfly 555-7685 1200/300 A bites 555-1675 2400/1200/300 A core 555-2912 1200/300 C fooey 555-1234 2400/1200/300 B foot 555-6699 1200/300 B macfoo 555-6480 1200/300 A sdace 555-3430 2400/1200/300 A sabafoo 555-2127 1200/300 C sabafoo 555-2127 1200/300 C Jan 21 36 64 620 Apr 21 70 74 514
`BBS-list'の`sabafoo'で始まる行が各ルールごとに1回、つまり2回表示されていることに注意してください。