AWKのKはKernighanのK!

などとずっと「えーだぶりゅーけー」だと思っていた僕が言うのも烏滸がましいのですが、


「はじめてのAWK」を見て試しにawkを書いてみた時点での感想。


まず割り切りの良い言語だな、と思った。
BEGINやENDという処理の最初と終わりに実行されるブロックの存在、
ということはさておき、

/[0-9]/ {
   ... 処理をごにょる
}

/2/,/4/{ 
 ... 処理をごにょる
}

のようにそのパタンにマッチした場合の処理を羅列して書いていける。
上は通常の正規表現マッチ、下は範囲を指定したマッチ。
マッチした場合だけ、そのブロック内の処理を上から順番に行う。

/RegExp/ { 処理 }

っていう割り切りは「汎用的な書き方を目指す!」
というような考え方をしている言語からはなかなかでてこない発想で、
嫌いじゃないな、ということ。


ある種のデータに対する操作(この場合はプレーンなテキストとかcsv)に特化することは、
汎用性を失う、という面も持っているかもしれないけれど、
その分、秀でた側面も持つ。


汎用兵器と特化兵器、
そういう風に分けてしまってよいものかわからないのだけど、
この基本構文はそれほど清々しいものだ。


それ*1Pythonでもできるよ、Rubyでも(ry
という意見もあるだろうけれど、


そういうことじゃないんだ!!!


awkが世界を席巻することはないだろうけれど、
その奥ゆかしさがいい!


sedとはずっと昔に出会ったのだけれど、
awkとの邂逅はまだこれからだと思うので、
一式勉強してみたいな、と思わせる初遭遇であったことです。


得意じゃないことがあってもいいじゃない
みつを。

*1:その処理