Bye Bye Moore

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

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