今日も AWK を使ってしまった

せっかく JavaScript 覚えたのに、今日も AWK です。なんというかなー、結局 AWK って私が一番好きな言語なのです。これほど、特定の用途において極めて有用で簡単にコードが書けて*1、なおかつ、本来の目的とは思えない領域でも、非常に強力に使える言語ってないんじゃないか?
最近は pragmatic な言語の最右翼として Ruby がやたらと評価されているけど、私くらいの三文プログラマにとっては、AWK が一番実用的な言語なのだ。最近、AWK が日陰者*2な言語に思えるのは私だけ?
話が逸れてしまった。今日も、仕事で必要なツールを AWK で書きました。あるログを分析するツールなんですけど。以前に PythonAWK で書いた記憶があって、一生懸命 find で探したけど見つからず。find で苦労したお陰で、今まで知らなかった -prune オプションの使い方を覚えてしまいました。こんなの。

$ cd ~/work
$ find . -type d -name '200[345]*' -prune -o -type f -size -10k \
    \! \( -name \*.obj -o -name \*.zip (略) \) -exec egrep 'awk *-f' {} \; -print

思い出しながら書いているので、間違っているかも知れないけど。
それで、見つからないからまた書き直さなくちゃ、ということで、どんな言語で書くか考えたけど、やっぱり AWK で書きました。今度、Python で書いて、比較してみようっと。あれ、JavaScript のことを書こうと思ってたんだけど*3
この本、絶対お勧め。

プログラミング言語AWK

プログラミング言語AWK

*1:最近の若い人(年寄りな言い方)は知らないかも知れないけど、Perl って AWK とか sedgrep に強く影響受けているのだ。PerlAWK を汎用言語にしてしまったので、ある意味、鋭さがスポイルされてる。ちなみにもっと最近の人が好きな PHP は、Perl の影響を受けている。

*2:私が思っているだけかも。

*3:ブラウザの JavaScript では、ローカルファイルシステムをアクセスするのが容易でなさそうなので、今回は使いませんでした。