---------- SED 教室 第一回 「SED って何?」 ---------- みなさんはプログラムを書いた事がありますか?最近はプログラムを書かない 人の方が圧倒的に多いですから、否定的な答ばかり返ってくるかも知れません。 たしかにプログラムを書くのって面倒ですよね。Nifty などのパソコン通信で便 利なフリーウェアがたくさん出回っているから、わざわざ自分で書く事はないと お考えの方も沢山いらっしゃると思います。 でも人の作ったプログラムって自分の要求に合わない事が多いんですよね。私 は Nifty に login するときは料金がもったいないので大抵オートパイロットで すが、フリーウェアとして出回っているオートパイロット用のマクロは汎用的す ぎてサイズが大きすぎるので自分で作ったマクロを使っています。言うのを忘れ ていましたが私は普段 Dynabook J-3100SS001 (元祖ダイナです。) 使っていま す。これの RAM ディスクだけで、通信から文書作成、C でのプログラミング、全 てを済まそうとしているのでフリーウェアをどんどん詰め込む訳にはいかないの です。ハードディスクを持っている方ならば便利そうなフリーウェアを全部イン ストールする事も可能でしょうが... それなら全部自分でアセンブラで書けば、ディスクの使用量は最小になるっ! なんて書くとみなさん逃げ出すでしょうね。私も逃げます。^_^;) C で書くのも 面倒ですよね。BASIC ? 昔使っていましたが、今は処理系すら手元にはありませ ん。前置きが長くなりすぎましたが、ここで SED の出番となるわけです。あな たのディスクの中には SED.EXE はありますか?なければすぐインストールしま しょう。SED は色々なことができます。head, tail, cut, paste, cat, grep, tr これらのツールとほとんど同様のことが、ちょっとスクリプトを書くだけで できるのです。 さてさて、いきなりわからない言葉が沢山出てきたからといって逃げ出さない でくださいね。head を始めとするツールを一つも知らないからといって自分に は縁のない世界だと思わないでください。これらのツールはなくてもコンピュー タは使えますが、あると今まで大変手間がかかっていた作業が全部自動化されて しまうかも知れません。エディタで置換という操作がありますね。この置換とい う操作を知らなくてもエディタを使うことはできます。でも知ってたら相当手間 が省けます。これらのツールも置換操作と同様、知ってると大変便利なものなの です。さらに SED はこれらのツールの親玉なのです。ということは SED を知っ ているとすごく便利なのです。:-) あ、もう一つ見慣れない言葉がありましたか。スクリプト。辞書でみると script:手書き文字、とあります。SED はいろんなことができますから、何をさ せたいか指定する必要があるのです。プログラムやマクロと似たようなものです が、「手書き」という説明から、さっさと書けるという印象を受けませんでしたか? そうです。たとえば会議室のログから ID とハンドル名を抜き出したい場合は、 コマンドラインから次のように SED を実行します。 A>sed -n -e "s/^[0-9][0-9][0-9]\/... \(.*\) .*/\1/p" logfile -e の次の「"」で囲まれた文字列が SED のスクリプトです。そして「logfile」 は会議室のログのファイル名です。これと同じ事をするプログラムを C で書こ うとすると、どんなに C のエキスパートでもデバッグ時間込みで 30 分はかか ると思いますが、私が SED の命令を書くのに要した時間は 30 秒程度だったで しょう。いっぱつで動作してしまったのでデバッグ時間はありません。スクリプ トはこの例で言うと -e オプションの後に続く "..." で囲まれた文字列です。 なにやら暗号めいていますが、たしかに書くだけなら 30 秒もかからないという のがおわかりでしょう。慣れればこの程度のスクリプトなら特に考えずにすらす らと書けます。 SED のスクリプトは、このようにオプションとして指定することもできますが、 長くなる場合はファイルに書きます。この場合でしたら <<< HANDLE.SED >>> ------------------------------------------------------------------- s/^[0-9][0-9][0-9]\/... \(.*\) .*/\1/p ------------------------------------------------------------------- としておいて sed -n -f HANDLE.SED logfile と呼び出します。スクリプトが書かれたファイルの拡張子は何でも良いのです が、".sed" を使うのが MS-DOS の世界では一般的なようです。 ずいぶん長くなってしまったので今日はこの辺でおしまいということにしたい と思います。SED.EXE を download して、第二回目の SED 教室をお楽しみに。 --- GCD03723 (Greatest Common Divisor:最大公約数)