awk 配列 使い方

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

awkでは、他のプログラミング言語のように配列を使うことができます。配列の簡単な使い方のまとめです。

スポンサーリンク



awk 連想配列

awkの配列では、インデックスには文字列でも数字でも使うことができます。

awk_array1.awk

BEGIN {
    array[0]   = "array_0"
    array["A"] = "array_A"

    print array[0]
    print array["A"]
}
$ awk -f awk_array1.awk 
array_0
array_A

awk 配列への代入・配列のデータ参照

配列への代入は、インデックス(文字・数字OK)を指定し、=で値を代入します。参照の場合は配列にインデックスを指定します。for文などで(全ての)要素を読み出すことができます。

awk_array2.awk

BEGIN {
    array[0] = "array_0"
    array[1] = "array_1"

    array["A"] = "array_A"
    array["B"] = "array_B"

    for (i in array) {
	print array[i]
    }
}
$ awk -f awk_array2.awk
array_A
array_B
array_0
array_1

for文を使って配列にアクセスする場合、手動でインデックスをコントロールすることもできます。演算子inで配列内に存在するか?をテストすることができます。

awk_array3.awk(in チェックなし)

BEGIN {
    array[0] = "array_0"
    array[1] = "array_1"
    array[3] = "array_2"

    for (i=0; i<10; i++ ) { # 余分なインデックスを含む 
	print array[i]
    }
}
$ awk -f awk_array3.awk 
array_0
array_1

array_2







awk_array3.awk(in チェックあり)

BEGIN {
    array[0] = "array_0"
    array[1] = "array_1"
    array[3] = "array_2"

    for (i=0; i<10; i++ ) { # 余分なインデックスを含む 
	if (i in array) print array[i]
    }
}
$ awk -f awk_array3.awk 
array_0
array_1
array_2

awk 配列からの削除

配列からの削除は、delete文を使います。

awk_array4.awk

BEGIN {
    array[0] = "array_0"
    array[1] = "array_1"
    array[3] = "array_2"

    delete array[1]

    for (i=0; i<10; i++ ) {
	if (i in array) print array[i]
    }
}
$ awk -f awk_array4.awk 
array_0
array_2
スポンサーリンク