AWKの変数とprintf

複雑なプログラムを書くには変数が必要です[*]。変数名は Cと同様、アルファベットで始まり、 アルファベットと数字からなる文字列が使えます。正規表現で書けば [a-zA-Z][a-zA-Z0-9]*です。

ただ、 Cと違い、 AWKには変数の型がありません。宣言する必要もありま せんし、整数も浮動小数点数も文字列も気にする必要が(基本的に)なく、 AWKが良きに取りはからってくれます。

書式を指定した AWKの出力には Cとほぼ同じ形式のprintfが使えます。最 初のほうで見せたsin.awkの例をもう一度みましょう。

    #!/usr/local/bin/gawk -f
    # sin.awk:
    BEGIN {
        for (i = 0; i <= 100; i++)
            printf("%1.6f\n", sin(i*3.1415/100));
    }

変数iを宣言なしで使っていますね。また、"%1.6f\n"はprintfの書式指定で、 もちろんfは浮動小数点数の意味です。詳細は Cと全く同じなので説明はこ こでは省略しましょう。

ところで、このスクリプトのパターンはBEGINしかありません。それ以外のパ ターンとアクションの組がありませんので、このスクリプトを実行すると、ま ずこのBEGINのアクションを実行し、その後(実行すべきものが何もないので) 何もせずに終了します。これは入力を受けとる必要がないときに良く使われる 手法です。

OGURISU Osamu
2004-01-15