2010年8月2日月曜日

if = 条件に一致したら実行する - AWK

AWKのパターンと制御文
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
条件に一致したら実行します。一致しなかった時の実行文も書く事が出来ます。

**** 書式
--------
if (条件) 真の時に実行する文
もしくは
if (条件) 真の時に実行する文 else 偽の時に実行する文
--------

o 条件 -- 真偽を判定する式です。
   + 条件式の他に、数値や文字列を使う事も出来ます。
   + 1 や "a"など、何かが入っている時は、真になります。
   + 0 や "" の時は、偽になります。
o 真の時に実行する文 -- 空文や複文も指定出来ます。
   + 空文は、内容か空で、; (セミコロン)だけを書いた文です。
   + 複文は、{ と } で囲んだものです。中には複数の文を書く事が出来ます。
o 偽の時に実行する文 -- 空文や複文も指定出来ます。


**** 使用例
--------
{
  if ($0 ~ "ミク") {
    print FNR "行目にて、ミクさんを発見しました。";
    ++MikuCount;
  }
  else {
    print FNR "行目。見つかりませんでした。";
  }
}
END {
  print "# ミクさんは、" MikuCount "回登場しました。";
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
o else の書き方は、プログラムの構造が一目で分かるものを選びました。


**** 機能
o 条件が真の時、「真の時に実行する文」を実行します。
o 条件が偽の時、else があると「偽の時に実行する文」を実行します。
o 条件を書かないと、エラーメッセージが表示されます。

if 文で良く使われる演算子
記号書き方意味
比較演算子
==A == BAがBと等しい時に真。比較の時は、等号を2つ並べます。
!=A != BAがBと等しくない時に真。
~ A ~ /B/Aの一部が、正規表現Bに一致した時に真。("ミクさん" ~/ミク/) は真
「~」キーは、キーボードの右上にあります。数字の「0」キーの2つ右「^」を、シフトキーを押しながら。
!~A !~ /B/Aが、正規表現Bに全く一致しなかった時に真。("ミクさん" !~/リン/) は真
> A > BAの方が大きい時に真
>=A >= BAの方が大きいか、等しい時に真
< A < BAの方が小さい時に真
<=A <= BAの方が小さいか、等しい時に真
論理演算子
&&A && BAとBの両方が真の時に真。別名AND
||A || BAとBのどちらかが真の時に真。別名OR
!!AAの反対。Aが偽の時に真


**** メモ
o 条件によって 2つの値のどちらかを入れる時は、条件演算子 ?: を使う書き方もあります。

**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007)


==
関連ページ:
    ▼AWKのパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > else = ifで実行しない時に実行する
    switch = 選択肢を選んで実行する(Gawk専用)
    case = switch文の中で、選択肢を指定する(Gawk専用)
    +
    ?: = 条件演算子
    for = 繰り返し文その2
(2010年8月27日追加。どちらかの値を入れる時は、条件演算子 ?:で置き換える事が出来る)
(2010年8月24日変更。「条件式」=>「条件」。「条件式は真偽値のみ取る」との解説を見かけたので、その表現を避けた)
(2010年8月23日追加。if文で良く使われる演算子として、論理演算子を追加)