AWK-ワークフロー

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

読んだ

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

実行する

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

繰り返す

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

プログラムの構造

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

BEGINブロック

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

Syntax

BEGIN {awk-commands}

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

ボディブロック

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

Syntax

/pattern/ {awk-commands}

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

ENDブロック

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

Syntax

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スクリプトを使用して、ヘッダー付きのファイルの内容を表示してみましょう。

Example

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

このコードを実行すると、次の結果が得られます。

Output

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ブロックで、ファイルから1行を読み取り、AWKのprintコマンドを実行して、標準出力ストリームにコンテンツを出力します。このプロセスは、ファイルが最後に到達するまで繰り返されます。