3年ぶりの更新です。。。 すでに「AWKの基礎」は不要になったのでしょうね。申し訳ありません。
それでは始めましょう。
ここでは、制御構文の記述方法のお話をさせてください。(AWKに限ったお話ではありませんが・・・)
AWKの主な制御文には以下があります。
先ずは、インデントから・・・
ご存じのように、インデントは制御文が入れ子(ネスティング)になる場合などにスクリプトを見易くするための工夫です。
AWKのようにフリーフォーマットでプログラムを記述できる言語ではプログラムの階層構造を見易くするために必須ですね。
インデントにタブを使用する方が多いようですが、私は空白2文字分をインデント幅と決めています。
それもエディタのタブ表示(一般的には8文字分)の文字数を2文字として設定するのではなく、空白文字を2文字打ち込みます。
その理由は簡単です。「AWK 基礎知識(その1)」の章でお話ししたように、私流では「BEGIN」ブロックのみでプログラミングします。
そのため、ちょっとしたデータ集計などのスクリプトでも制御文の階層構造がかなり深くなるのです。
これでは8文字タブをインデントに使用すると長い文字数の行では途中から折り返されて見難くなるのす。
エディタで長い行を折り返さないように設定すると、深い階層構造では横スクロールしなければならず、スクリプトの見通しが悪くなるのです。
参考:
昔(CP/MやDOSの初期の頃)はモニタの横幅が80文字だったので、勝手に80文字で折り返して表示されていました。
・・・と言うことで、私は以下のようにインデント幅を昔から空白2文字として打ち込んでいます。
BEGIN {
.....
while (...) {
if (...) {
for (i = ...) {
for (j = ...) {
.....
}
}
}
}
}
BEGIN {
.....
while (...) {
if (...) {
for (i = ...) {
for (j = ...) {
.....
}
}
}
}
}
次に、ブロックの記述方法です。(簡単に済ませます。。。)
制御文に複数の命令実行させたい時には、{ } で括ってブロックとしなければなりません。
このブロックの記述方法には・・・
if (...) {
fou (...) {
..... (文の並び)
}
}
if (...)
{
fou (...)
{
..... (文の並び)
}
}