if文
if-else文はawkの意思決定文です。これは次のような形式をとります。
if (condition) then-body [else else-body]
conditionは、この文の残りのどれを実行するかを制御する式です。conditionが真の場合、then-bodyが実行されます。偽の場合は、else-bodyが実行されます(else節がある場合)。この文のelseの部分は省略できます。条件は、値が0またはヌル文字列の場合は偽、それ以外の場合は真と解釈されます。
次に例を示します。
if (x % 2 == 0)
print "x is even"
else
print "x is odd"
この例では、式x % 2 == 0が真の場合(つまり、xの値が2で割れる場合)、最初のprint文が実行されます。偽の場合は、2番目のprint文が実行されます。
elseがthen-bodyと同じ行にあり、かつthen-bodyが複合文でない場合(つまりカーリーブレースで囲まれていない場合)、then-bodyとelseはセミコロンで区切らなければなりません。これを説明するために、上の例を書き直してみましょう。
awk '{ if (x % 2 == 0) print "x is even"; else
print "x is odd" }'
`;'を付け忘れると、awkはこの文をパーシングできないので、構文エラーになります。
実際は、このような書き方はしない方が良いでしょう。なぜなら、elseがその行の一番最初にない場合、人間は見落としてしまう可能性があるからです。