2010年02月25日

grep.com のちょっとした問題

 パソコン内のファイル中に含まれる特定の文字列を探すとき、Windows では、「スタート」→「検索」とするのが標準的なやり方ですが、オーツは grep を使っています。
 このソフトは、元々は UNIX で使われていたツールでしたが、MS-DOS の導入後は、DOS 上で動く grep がいろいろ開発されてきました。オーツは、今でもそれを使っているわけです。
 20年以上前に(DOS の時代でしたが)、そのころ入手できるさまざまな grep 類をダウンロードして、実行速度を計ってみたことがありました。ある程度大きなファイルを用意して(といっても当時でしたからたかがしれていましたが)、その末尾のほうにある文字列を指定して実行し、表示まで何秒かかるかを時計で計ったわけです。そのとき、最速だったのは、市販ソフトの Turbo Pascal を買うと付録でついてくる grep.com でした。平均的なフリーウェアの数倍以上早かったのです。フリーウェアが C か何かのプログラム言語で書いてあるとすれば、この grep.com はアセンブラで書いてあるのだろうと思いました。(もしかして単にアルゴリズムの違いだけだとしたら、それはもうすばらしく優秀ということになると思います。たぶん、そんなことではないと思います。)
 その後、バージョンアップなどもありましたが、今、使っているのは、1991.07.17 のタイムスタンプのものです。これでも18年半使っていることになります。ソフトはくさりませんから、いつまでも使えるわけですね。
 もちろん、Windows に標準添付されている「検索」よりもずっと早く動作します。
 最近、Windows 7 のパソコンを買いましたので、そのマシンでもこの grep をそのまま使い続けることにしました。
 ところが、問題が生じました。18GB のテキストファイルから特定の文字列を含む行を抜き出そうとしたのですが、grep が動かないのです。いくつも含まれているのに、何も抽出しないで終わってしまうというトラブルです。
 Windows Xp でもやってみましたが、やはり動きません。
 さすがに、DOS 版の grep では、そういう巨大なファイルを想定していないのでしょうね。
 しかし、この grep は、300MB 程度の小分けにしたファイルではちゃんと動くので、小分けファイルで動かすことにしました。検索結果をあとから結合すれば、ほぼ同じ意味になります。

 パソコンのソフトはくさらないのですが、パソコン環境は次第に変化していっているわけで、この grep がいつまで使えるか、オーツは少々心配になりました。あと20年持たせたいところです。合計で40年使えば、使い倒した気がするでしょう。
posted by オーツ at 05:01| Comment(0) | TrackBack(0) | パソコンとIT | このブログの読者になる | 更新情報をチェックする