4 AWK の文法の概略

AWK は C 言語と似た文法で書けますが、違うところもあります。

また、C と同様に printf も使えますが、() は通常省略できます。

以下にいくつか簡単な例を上げますが、C 言語の入門書に書かれていそうな 例題を AWK で解いてみることにします。


1

「Hello World」を出力

    BEGIN{ printf "Hello world.\n" }
AWK には、単に文字列を 1 行改行をつけて出力する print という関数もあるので、 それを使えば、
    BEGIN{ print "Hello world." }
とすることもできます。 なお、print は %d などの書式指定は受けつけません。

C だと、例えば以下のように書きます。

    #include <stdio.h>
    int main(void)
    {
        printf("Hello world.\n");
        return 0;
    }

比較すればわかりますが、AWK の方は C で (多分意味もわからずに) 書いている #includemain() return 等が 不要です。



2

1 から 100 までの和、12 から 1002 までの和を出力

    BEGIN{
      for(j=1;j<=100;j++){ x+=j; y+=j*j }
      printf "和=%d, 自乗和=%d\n",x,y
    }
x,y の初期値が設定してありませんが、その場合は 0 が初期値になります。 最後の出力部分は、単に数字だけ欲しいなら
    print x,y
としてしまうことも可能です。

C だと例えば以下のようになります。

    #include <stdio.h>
    int main(void)
    {
        int j,x=0,y=0;

        for(j=1;j<=100;j++){ x+=j; y+=j*j; }
        printf("和=%d, 自乗和=%d\n",x,y);
        return 0;
    }


このように、

という点で AWK が優位であることがわかると思います。

竹野茂治@新潟工科大学
2007年12月23日