AWKプログラムの基本パターン - AWK
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
AWKプログラムは、次の4つの基本パターンを並べて作ります。ですので、AWKプログラムを読む時は、この4つの基本パターンを意識しながら読むと、イメージが掴み易いです。
(1) ファイルを一行読み込む毎に実行します。実行する条件を書く事も出来ます。
(2) BEGIN = ファイルを読み込む前に実行します
(3) END = プログラムの最後に1度だけ呼び出されます
(4) function = 関数です = 呼ばれた時に実行します
o function は、部品を作る時に使います。
+ 用語としてはパターンには入りませんが、書き方はパターンと同じです。
o AWKは、複数の入力ファイルをまとめて読み込む事が出来ます。
o BEGIN パターンと END パターンは、まとめて読み込むにも、AWKプログラムから1回だけ呼ばれます。
**** 基本パターン
** (1) ファイルを一行読み込む毎に実行します
--------
{
print "こんにちは。" NR "行さん。"; # NRはこれまでの読み込み行数です。
}
# 条件を書いて、読み込む行を選択する事も出来ます。
$1 == "ミク" {
print "こんにちは。ミクさん。";
}
--------
o 条件の書き方については「パターンの書式と使い方」
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
** (2) BEGIN = ファイルを読み込む前に実行します
--------
BEGIN {
print "ファイルを読まずに終了します。";
exit;
}
--------
o 出てくる単語の意味は、「BEGIN = 最初に実行する」
+ 「print = ファイルなどに書き出す」
+ 「exit = 終了する」
** (3) END = プログラムの最後に1度だけ呼び出されます。
o ファイルを最後まで読んだ後に実行します。ファイルを複数指定した時は、全部読み込んだ後に実行します。
--------
END {
print "全部で" NR "行ありました。";
}
--------
o 出てくる単語の意味は、「END = 最後に実行する」
** (4) function = 関数です = 呼ばれた時に実行します
--------
function f_get_price(v1) {
return (v1 * 100);
}
{
v_apple = $1;
print "林檎。" v_apple "個の価格は、" f_get_price(v_apple) "円です。";
}
--------
o 出てくる単語の意味は、「function = 関数を作る」
+ 「return = 関数の呼び出し元に戻る」
**** メモ
o 1行の処理の途中で次の行に進みたい時は next;
o 「END」以外の場所で exit文を書く場合
+ 「END」を書くと、プログラム終了時に必ず通ります。
+ 「END」の処理を行いたくない時は、「END」の最初で判定して、もう一度exitします。
**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007)
==
関連ページ:
▼AWKのパターンと制御文(▼ABC順)
▼AWKプログラムを書く(▼ABC順)
▼AWK
▼制作メモ
> AWKの関数名と変数名を区別する方法
ローカル変数を使う
AWKプログラム実行時に変数を設定する
(2011年2月2日変更。冒頭の説明文の見直し)
(2010年9月27日追加。各例について機能説明ページへのリンク)