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