Awk-workflow

提供:Dev Guides
移動先:案内検索

AWK-ワークフロー

エキスパートのAWKプログラマになるには、その内部を知る必要があります。 AWKは、読み取り、実行、繰り返しという単純なワークフローに従います。 次の図は、AWKのワークフローを示しています-

AWKワークフロー

Read

AWKは、入力ストリーム(ファイル、パイプ、またはstdin)から行を読み取り、メモリに保存します。

実行する

すべてのAWKコマンドは入力に順番に適用されます。 デフォルトでは、AWKはすべての行でコマンドを実行します。 パターンを提供することでこれを制限できます。

繰り返す

このプロセスは、ファイルが最後に達するまで繰り返されます。

プログラム構成

ここで、AWKのプログラム構造を理解しましょう。

BEGINブロック

BEGINブロックの構文は次のとおりです-

構文

BEGIN {awk-commands}

BEGINブロックは、プログラムの起動時に実行されます。 一度だけ実行されます。 これは変数を初期化するのに適した場所です。 BEGINはAWKキーワードであるため、大文字でなければなりません。 このブロックはオプションであることに注意してください。

ボディブロック

本体ブロックの構文は次のとおりです-

構文

/pattern/{awk-commands}

bodyブロックは、すべての入力行にAWKコマンドを適用します。 デフォルトでは、AWKはすべての行でコマンドを実行します。 パターンを提供することでこれを制限できます。 Bodyブロックにはキーワードがないことに注意してください。

ENDブロック

ENDブロックの構文は次のとおりです-

構文

END {awk-commands}

ENDブロックは、プログラムの最後に実行されます。 ENDはAWKキーワードであるため、大文字でなければなりません。 このブロックはオプションであることに注意してください。

シリアル番号、生徒の名前、科目名、取得したマークの数を含むファイル marks.txt を作成しましょう。

1)  Amit    Physics  80
2)  Rahul   Maths    90
3)  Shyam   Biology  87
4)  Kedar   English  85
5)  Hari    History  89

AWKスクリプトを使用して、ヘッダー付きのファイルコンテンツを表示します。

[jerry]$ awk 'BEGIN{printf "Sr No\tName\tSub\tMarks\n"} {print}' marks.txt

このコードが実行されると、次の結果が生成されます-

出力

Sr No Name Sub Marks
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89

開始時に、AWKはBEGINブロックからヘッダーを出力します。 次にbodyブロックで、ファイルから行を読み取り、AWKの印刷コマンドを実行します。このコマンドは、コンテンツを標準出力ストリームに印刷するだけです。 このプロセスは、ファイルが最後に達するまで繰り返されます。