Strange Days

awkで一行野郎

2000年02月02日(水曜日) 15時13分 コンピュータ

 仕事中、あるディレクトリ以下の全ファイル名をlow caseに正規化しなければならなくなった。かなりあるので手でやるのは大変だ。というわけで、久しぶりにawkの一行野郎で片づけようと思った。
 awkを知らない子供たちのために書いておくと(なにか自慢げに見えるな)、awkは'70年代にBell-ATTの三人の研究者が初期のUNIX用に開発したツールで、ある簡単な書式に則った命令の列(スクリプトという)を解釈し、処理対象の入力(ファイルからの場合も標準入出力というコンソールベースでの入出力の場合もありうる)を処理して出力するものだ。この時にスクリプトによって入力を様々に処理できるので、少し前までUNIX(いやDOS系も)でちょっとした仕事をする時には、たいていawkが顔を出したものだ。今でも使われているが、perlの方が既に有名かもしれない。
 今回の場合、NTのコンソールで処理しなければならなかったのだが、一応はDOS系ツールも使えるので、懐かしのMS-DOS時代に移植されたjgawkにお出まし願った。
 コマンドラインで、
jgawk '/*/{print "ren "$0 " " tolower($0);}' \work\ren1.bat>ren.bat
とかやって一発変換だ。と、途中の"\"で切られてしまう。それではとスクリプト自身をファイルに書き、それを呼び出す形で処理した。今度は成功。出来たバッチファイルを使って全ファイル名をlow case化出来た。
 かつてはこの程度のスクリプトは四六時中組んでいたものだが、今では滅多に使わないで、むしろ手でチマチマと変更する事が多い様に思う。GUIベースだと離散的な処理をするのが困難なのだが、かといって移植されているのはせいぜいsedレベルのツールだ。Windowsスクリプトでも使えというのだろうか。
 かつて、Mac v.s. MS-DOSの論争の中で、「Macでは離散的な処理をこなせない」という指摘があったように思う。しかしWindowsもGUIベースの大型アプリが一般化して、こういう小回りの利くツールが目立たなくなってしまった。そりゃあ今でもDOS時代の遺産を使える事ではあるが、どれくらいの人がこういう仕事をツールで自動化しようと思いつくのだろうか。いささか心許ない限りではないか。


Add Comments


____