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