Bye Bye Moore

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

AWKにおけるバッドパターン、getlineの多用について

getlineは、大雑把にいうと……条件にあった行を取得しに行く組み込み関数です。
たとえば、3行目から2個先の行を取る場合、こんな風に。

$ seq 1 10 | gawk '/3/{getline; getline; print}'
5

あるいは、入力を既存ファイルの内容で割り込みさせるとか

$ seq 1 5 | gawk '{if($1==3){getline < "sample.txt"; print} else {print} }'
1
2
This is my dog,
4
5

一見便利そうな関数ですが……便利な関数につきものな「バッドパターン」の宝庫でもあるそうで。
参考もとでは、やりがちな実装と、それに対応した「ベストプラクティス」を提案してくれています。

つづき:
shuzo-kino.hateblo.jp

参考もと

awk.info