awkもはじめました。

たまたま、先輩にawkを教えてもらう機会があったので、(なぜか)自宅にあった「sed&awkプログラミング 改訂版」(ISBN:4900900583)を片手にawkのお勉強をしてみた。
こっちは「まさに道具!」という感じで、非常に興味深い言語だ。
awk の一般的な用途はテキスト解析であり、基本的にはそれしか出来ない言語だ。だけど、用途を割り切っているおかげで、この手のプログラミングにありがちな、ファイルのオープン/クローズや、行番号の管理(for文でぶん回すような)、区切りごとの単語の解釈、といった面倒なコーディングをかなり簡略化することに成功している。
「ls -alコマンドの結果をファイルに残した。このファイルの5列目(スペース区切り)にファイルサイズが書いてあるんだけど、このファイルサイズだけを合計した値が欲しい」といった用途なんかだと、たった2行で書けてしまう。

{ count += $5 }
END { print count }

もちろん、PerlRuby なんかを使って同じような目的のスクリプトを作ることは可能だけど、ここまで簡潔に、直感的に書くことはさすがに無理だ。まだまだ awk も捨てたもんじゃないなあ、とつくづく思った。少なくとも、シェルスクリプトの中だけで生き続ける、というにはもったいないだけのポテンシャルはある。
実際、プログラマー以外の人にアピールできるポテンシャルは、結構あるんじゃないだろうか。少なくとも、Excel VBAVBScriptよりはずっと簡単だし。つまづくところも少ない。
Windowsgawk の最新版だと、UTF-8やShift-JISを含むマルチバイトコードもうまくさばけるらしい。日本語の問題がかなり軽減されている、ということは仕事にも使えるかもしれない。今度調べてみよう。