Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

awkの配列をfor文で順繰りに読む

awkの配列をfor文で順繰りに読む場合、
eachのような気の利いた関数はないので、
シェルなどと同様 for ( NUM in ARY )てな書き方になります。

実際のところ

BEGIN {
         a["here"] = "here"
         a["is"] = "is"
         a["a"] = "a"
         a["loop"] = "loop"
         for (i in a) {
             j++
             a[j] = j
             print i
          }
}

awk界隈では"$1"など文字で配列のインデックスを貼っているケースが多いように感じます。
ただ、これは一部処理系*1では投入順にならないといった問題もあるようです。
その場合、NFなどを使って、sortされても問題ないようにしたほうがよいかと思われます。

参考もと

  • effective awk

*1:bawk等