Let's GAWK! とにかく使うJGAWK その7

 みなさん こんにちわ

 前回予告の制御構造の話です。世のプログラミング言語に倣い、awkでも以下の制御文が使えます(「テキストデータ料理学」翔泳社 p123より)。

if(式) 文
式が真なら文を実行
if(式) 文1 else 文2
式が真なら文1、偽ならば文2を実行
for(式1; 式2; 式3) 文
まず式1を評価。式2を評価し真ならば文を実行し式3を評価、式2の評価にもどる
for(変数 in 配列) 文
配列のすべての要素を変数に代入し、それごとに文を実行
while(式) 文
式が真である限り文を実行
do 文 while(式)
文を実行した後、式が真である限り文を実行

 制御文の実行制御に次のようなコマンドが使えるのも同様です。

     break, continue, next, exit

、、、と書いても全然ピンと来ないでしょうし、全部が使えなくてもいいのでいくつか例を示します。なおここで示す制御文はすべてアクションの中で使うものです。つまりここにあげたものとは別にパターンマッチングを利用できるわけで、制御文を全然使わなくてもかなりの処理ができてしまいます。

 1から100までの和を求める、その1。

  BEGIN{while(i<=100){
             sum=sum+i;
             i++};
        print sum}

 1から100までの和を求める、その2。

  BEGIN{for(i=1;i<=100;i++){
             sum=sum+i};
        print sum}

 それぞれ、こう書けばone-liner(一行野郎)になります。

  BEGIN{while(i<=100){sum=sum+i;i++};print sum}
  BEGIN{for(i=1;i<=100;i++){sum=sum+i};print sum}

 for や whileは繰り返し処理(ループ)のための制御文です。その1もその2も iの値を1づつ増やして変数sumにどんどん加えて行き、iが100を越えたら終了という意味です。



 初出 NIFTY-Serve「みんみんネット」1996/09/15 (Sun) 20:17:28