awk if 三項演算子 条件文の使い方

バイオインフォ道場、くまぞうです。

awkの条件文(if・三項演算子)についてまとめます。

スポンサーリンク



関連記事
awk 区切り文字とフィールド
awk よく使うシステム変数と使い方
awk パターンとアクション

awk 条件文 if

条件文を使って条件による分岐処理などを記述します。ifの判断は、条件の評価が真(ゼロ以外または空以外)です。awkの条件文はC言語のそれに似ています。

関連記事
プログラム言語の基本 C言語を始める
Hello World! – C言語 –
C言語 コマンドライン引数 スクリプトの書き方
C言語 if 条件分岐 使い方

awk 条件文 if 書き方

書式

if( 条件 )
  処理1
[else
  処理2]

awk_if1.awk

条件が真(ゼロ以外または空以外)に注目した条件分岐です。

BEGIN {
    x = ARGV[1]
    if (x) print "x =", x # 引数が真かどうかを判断
}
$ awk -f awk_if1.awk 0  # 引数が偽 表示なし

$ awk -f awk_if1.awk 1  # 引数が真 表示あり
x = 1

awk_if2.awk

条件が真(ゼロ以外または空以外)、条件が偽のとき(else)の条件分岐です。

BEGIN {
    x = ARGV[1]
    # if else で処理を分岐
    if (x) 
	print "x =", x
    else
	print "x is false"
}
$ awk -f awk_if1.awk 0  # 引数が偽(メッセージ)
x = false
$ awk -f awk_if1.awk 1  # 引数が真(数値表示)
x = 1

awk_if2-2.awk

条件が複数ある場合(if・else if)、条件が偽のとき(else)の条件分岐です。

BEGIN {
    x = ARGV[1]
    # if, else if, else で処理を分岐
    if (x=="A") print "x is A"
    else if (x=="B") print "x is B"
    else print "x is other"
}
$ awk -f awk_if2-2.awk A  # 条件1
x is A
$ awk -f awk_if2-2.awk B  # 条件2
x is B
$ awk -f awk_if2-2.awk C  # その他の条件
x is other

awk_if3.awk

条件が真(ゼロ以外または空以外)、条件が偽のときの条件分岐です。書式簡略化。

BEGIN {
    x = ARGV[1]
    # if else で処理を分岐(;セミコロンを使って、書式簡略化) if (x) print "x =", x; else print "x is false" }
$ awk -f awk_if3.awk 0  # 引数が偽(メッセージ)
x is false
$ awk -f awk_if3.awk 1  # 引数が真(数値表示)
x = 1

関連記事
awk while・do 繰り返し処理
awk for 繰り返し処理
awk 配列 使い方

awk 条件文 if 評価の色々

ifの評価では、変数自体の真偽・比較・正規表現を使ったパターンマッチの評価などを使うことができます。

awk_if1.awk(前述の例と同じです)

変数自体が真(ゼロ以外または空以外)か偽かを判断します。

BEGIN {
    x = ARGV[1]
    if (x) print "x =", x # 引数が真かどうかを判断
}
$ awk -f awk_if1.awk 0  # 引数が偽 表示なし

$ awk -f awk_if1.awk 1  # 引数が真 表示あり
x = 1

awk_if2-2.awk(前述の例と同じです)

条件で値を比較しています。値が同じなら真・同じでないなら偽の評価です。

BEGIN {
    x = ARGV[1]
    # if, else if, else で処理を分岐
    if (x=="A") print "x is A"
    else if (x=="B") print "x is B"
    else print "x is other"
}
$ awk -f awk_if2-2.awk A  # 条件1
x is A
$ awk -f awk_if2-2.awk B  # 条件2
x is B
$ awk -f awk_if2-2.awk C  # その他の条件
x is other

awk_if4.awk

正規表現によるパターンマッチで真偽を判定しています。

{
    if ($1 ~ /^#/) print "comment"
    else print "data"
}
$ cat awk_if4.dat
#comment1
data1
data2
data3
#comment2
data4
$ $ awk -f awk_if4.awk awk_if4.dat
comment
data
data
data
comment
data

awk 条件文 三項演算子

三項演算子を使って条件による分岐処理を記述します。とても短く書けます。こちらもC言語の三項演算子と使い方など同じです。

awk 条件文 三項演算子 書き方

書式

条件 ? 真のときの処理 : 偽のときの処理

awk_3kou.awk

条件が真(ゼロ以外または空以外)に注目した条件分岐です。

BEGIN {
    # 三項演算子で分岐処理(条件 ? 真の処理:偽の処理)
    message = ARGV[1] ? "TRUE" : "FALSE"
    print message
}
o$ awk -f awk_3kou.awk A
TRUE
$ awk -f awk_3kou.awk
FALSE
$ awk -f awk_3kou.awk 0
FALSE
スポンサーリンク



2 thoughts to “awk if 三項演算子 条件文の使い方”

コメントは受け付けていません。