Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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等