© 2005-2012, Kyu-hachi TABATA
休八のスクリプト言語支援ソフト

 Piper (パイパー)   ver 1.25


■1.grep, sed, awk を Windows で使う

DOS時代のスクリプト言語、grep, sed, awk は、シンプル、パワフル、コンパクトで、とても便利なツールでした。実際、「こんな時は sed だよね。」と思えるテキスト処理は依然としてありますから、Win時代の今でも利用者は少なくないはずです。

しかし、使い慣れているはずなのに、コマンドプロンプト画面で sed でテキストファイルの文字列検索をやってみると、案外、面倒なことがわかりました。なぜなら、DOS時代と比べ、Windows のディレクトリ構造は深くなりましたし、扱うファイルの数や種類は極端に増え、ファイル名も長くなり、2バイト文字の使用も頻繁になっているから です。ま た、複数の窓を見ながら作業をするのに馴れた今では、type 文などを使って、ソースやテキストをいちいち覗くのはどうにも非能率的。

そこで、DOS 時代のスクリプト言語を Windows 上で操作したいと考えて、「Piper」 を作りました。

(1) テキスト処理(csv や html なども含む)を前提にしています。
(2) 対象ファイルをスクリプト処理し、結果をファイルとして出力します。
(3) grep, sed, awk に標準対応。設定次第で、他の言語にも対応可能です。

シンプルなソフトですが、かなり快適になると思います。ご利用ください。


■2.Piper の機能

(1) 起動すると3つの画面が表示されます。スクリプト(メイン)、オブジェクト(対象ファイル)、リザルト (出力ファイル)の画面です。

(2) スクリプトパネルの実行ボタンを押すと、そこに表示されているスクリプトを元に変換処理が行われ、オブジェクトファイルがリザルトファイルとして出力 されます (右図)。

(3) 変換にどのスクリプト言語を使うかを選ぶことができます。標準では grep, sed, awk に対応しています。設定ファイル (Piper.cfg) を編集すれば、これら以外のスクリプト言語の使用に対応できます。設定された言語は、Piper 上でいつでも切り替えて使用できます。

(4) 仕組みは実に簡単で、スクリプト言語(sed.exe など)を引数付きで実行させるバッチ (temp.bat) を作製し、これを Shell で実行しているだけです。スクリプト処理はスクリプト言語に任せ、Piper はデータの受け渡し(=リダイレクト処理)とファイルの表示、保存などを行っています。

Piper を使うと、スクリプトを編集しながら、手軽に動作確認ができ、その結果をファイルとして保存することができます。複雑な検索置換作業をするため に、いろい ろと試してみたい時など、Piper がきっとお役に立つとと思います。どうぞ、この Piper で DOS 時代のスクリプト言語をもっと活用してください。

*Piper といいながら、パイプ処理(=複数のプログラム間でのデータ受け渡しをする)ができるわけではありません。ただし、Piper.cfg にパイプ処理を組み込めば、可能ではあります。お試しください。
*Piper という名前の由来は、Windows とスクリプト言語を pipe するソフトだからです。



■3.必要な外部プログラム

次の3つの言語プログラムを標準対応としていますので、それぞれダウンロードして、指定のファイルをpiper.exe と同じディレクトリにコピーしてください。

【GREP】 grep win32 2.0+mb1.04 (GNU grep / Win32 Version)
95.01.29公開 207K フリーソフト
作者:Free Software Foundation 吉澤 康介 谷本 孝浩
http://www.vector.co.jp/soft/win95/util/se015011.html

*解凍して出来るファイルのうち、grep.exe を piper.exe と同じディレクトリにコピーしてください。

【SED】 GNU SED DLL版 1.18 (GNU sed 1.18 / Win32 DLL 移植版)
95.08.20公開 187K フリーソフト
作者:Free Software Foundation 谷本 孝浩 前寺 正彦 
http://www.vector.co.jp/soft/win95/util/se028215.html

*解凍して出来るファイルのうち、sed.exesed.dll を piper.exe と同じディレクトリにコピーしてください。

【AWK】 gawk win32 2.15p4+mb1.03 (GNU awk / Win32 Version)
95.01.29公開 640K フリーソフト
作者:Free Software Foundation 吉澤 康介 谷本 孝浩
http://www.vector.co.jp/soft/win95/util/se015007.html

*解凍して出来るファイルのうち、gawk.exepiper.exe と同じディレクトリにコピーしてください。

実は私は上記以外はほとんど使ったことがないので、よく わからないのですが、たぶん、これ以外のスクリプト言語でも、設定次第で使えると思います。でも、まずは上記3つの言語を入れてから Piper を起動し、sample ファイルを使って、操作チェックをしてください(次項参照)。


■4.テュートリアル(サンプルの説明)

(1) sample.txt :練習用のテキストです。

こ れを対象ファイル として(= object 画面で)呼び出してみましょう。

* 以下、object は対象ファイル名、result はリダイレクト先ファイル名、option はオプションコマンド、pattern はパターン、script はスクリプトファイル名を示します。スクリプトファイルを切り替える時は、まず、処理言語の指定を変えてから、ファイルを参照すると、指 定された言語系の スクリプトだけが表示されますので、便利だと思います。

(2) sample.grep :grep スクリプトのサンプル。

メイン画面に呼び出して、[実行]ボタンを押してみましょう。このサンプルで は、オプ ション -n を使って「愛用」という文字が含まれる行を行番号つきですべて表示します。-n を -c と変えると行数のみを表示します。

*本来はコマンドラインで、grep optionpattern object > result という形式で実行。このサンプルファイルは option pattern 部のコマンドをファイルにしたものです。なお、grep はその性質上1行だけの記述で、ファイルではありますが、内容は1行のみとなります。

(3) sample.sed: sed スクリプトのサンプル。

メイン画面に呼び出して、[実行]ボタンを押してみましょう。このサンプルで は、オプ ション s をつかって、「スクリプト」を script、「インタープリタ」を interpriter に変換します。もうひとつのオプション g は、最後まで処理を続ける(すべての文字がチェックされる)ための命令です。

*本来はコマンドラインで sed -f script object > result という形式で実行。このサンプルファイルは script 部で指定されるファイルにあたります。sed は複数処理が可能なので、option pattern が 必要な数だけ、1行1処理で記述されます。

(4) sample.awk: awk スクリプトのサンプル。

メイン画面に呼び出して、[実行]ボタンを押してみましょう。このサンプルで は、「言 語」が含まれる全ての行の最初の要素(スペースかカンマで区切 られた最初の文字列)を列挙します。awk は本来は csv形式のデータベースファイルを処理するのに向いた言語で、ちょっと sample.txt は例として不向きかもしれませんが、ここでは強引に作業しています。

*本来は、コマンドラインで awk -f script object > result という形式で実行。このサン プルファイルは script 部で指定されるファイルにあたります。awk は複数処理を行うことができ、しかも条件分岐もできる強みがあります。option pattern が 必要な数だけ、1行1処理で記述できます。


■5.その他の機能

(1) オプション−プロンプト画面を開く: コマンドプロンプト画面(DOS画面)を表示することができます。dir をすると temp.bat があるはずですが、これが Piper の作ったバッチファイル。これをさらに直せば、パイプ処理などもできるようになります。

(2) オプション−フォント/フォントサイズ: フォントの種類やサイズを変更できます。

(3) ヘルプ− Web 参照: 登録されている Web ページを internet explorer で表示します。最大20まで登録できます。


■6.設定ファイル

(1) Piper.cfg

Piper.cfg は使用する言語についての設定ファイルです。Piper.exe と同じディレクトリにあり、テキストファイルなので、メモ帳などのテキストエディタで簡単に編集できます。自分の使いたい言語を 20 まで登録することができます。デフォルト状態の内容とその説明は下記のとおりです。

SED, sed.exe -f scr obj > res, sed
GREP, grep.exe com obj > res, grep
GAWK, gawk.exe -f scr obj > res, awk
-----, ---------------------, ----
 ↑        ↑         ↑
言語名,     コマンド,     スクリプトの拡張子

【言語名】 自分で自由につけられます。
【拡張子】 sed, grep, awk など。ピリオドは不要。
【コマンド】 実行プログラムとその引数です。デフォルトでは引数部分に、リダイレクト記号 ">" を使って obj を res に出力するようにしています。コマンド部には次の略号を使うことができます。

scr スクリプトファイル。処理の方法を書いたファイル。
obj オブジェクトファイル。処理の対象となるテキストファイル。
res リザルトファイル。処理の結果、出力されるテキストファイル。
com コマンド(またはパターン)。処理の方法そのもの。grep などスクリプトファイルを指定できないもので使用。sed や awk などをコマンド形式で使いたい時にも利用できます。

(2) Piper.cf2

最後に使用した状態を保存しているファイルです。Piper.exe と同じディレクトリにあり、テキストファイルなので、メモ帳などのテキストエディタで簡単に編集できます。内容は下記のとおり。

1行目〜3行目: Script, Object, Result のファイル名(パス含む。相対パスでも絶対パスでも可)
4行目〜6行目: 3つの画面の表示位置、サイズの設定
7行目: フォントの種類、サイズ、起動時のスクリプト

(3) Piper.cf3

Web 参照の設定ファイルです。Piper.exe と同じディレクトリにあり、テキストファイルなので、メモ帳などのテキストエディタで簡単に編集できます。内容は2行で一組となっていて、この繰 り返しを 最大20組まで登録できます。

1行目: 参照名 (例: SED 教室)
2行目: URL   (例: http://www.gcd.org/sengoku/sedlec/)


■7.参考

万年初心者の私が参考にしているサイト&本を挙げておきます。これらのサイトは、ヘルプの Web 参照にも登録してあります。登録は、Piper.cf3 の編集で行います。変更や追加が可能です。

水谷正大 「パターンマッチと grep」
http://www.rsch.tuis.ac.jp/~mizutani/online/grep/index.html

仙石浩明 「SED教室」
http://www.gcd.org/sengoku/sedlec/

佐藤ちみも 「SEDは日暮れて」
http://www.chimimo.com/sed/

Wikipedia - SED
http://ja.wikipedia.org/wiki/Sed_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)

小栗栖 修 「AWK の第一歩」
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/awk/intro/

The GNU Awk User's Guide
http://www.kt.rim.or.jp/~kbk/gawk-30/gawk_toc.html


片山裕 「sed パズルブック」
インプレス 1993年 \2,200

月刊アスキー編集部 「パソコン便利ブック」
月刊ASCII 1991年1月号特別付録


■8.履歴

ver 1.25 web ヘルプのURLを新しいものに修正。インストーラーを廃止。
2012/8
ver 1.20
き ちんとインストールしても、うまく動かないケースがあり(熊 本の樽本さん)、 このバグフィ クスをしながらバージョンアップしま した原 因は、バッチの呼び出し方に問題があり、ディレクトリなどが異なると不具合が生じていました。このほか、次のような機能を追 加。
(1) ファイル名表示の横に
「参照」ボタンと「保存」ボタンを追 加。
(2) メニューのファイル・上書き保存の有効・無効を表示。
(3) スクリプトファイルの選択によって、言語系も自動で切り替わるようになりました。
(4) ヘル プ(このHTMLです)をかなり改訂。grep と awk のサンプルも追加。
(5) Web 参照の機能もつけました。参照したい web リストは任意に設定できます(Piper.cf3 で設定)。これ便利。
2006/5
ver 1.00
公開版
2005/7

*お名前は、バグ報告やリクエストをくださった方です。大変感謝しておりま す。ありがとうございました。ま た、私自身の都合やプログラムの変更の手間の関係で、だいぶ時間がたってからの対応もしばしばですが、どうか、ご容赦ください。



■9.著作権など

このソフトは、フリーウェアであり、著作権を放棄したものではありません。ヘルプファイルやアイコンも含めて、改変したものを第3者へ譲渡するこ とを禁じ ます。また、この Piper で利用するスクリプト言語については、それぞれの著作権を守ってください。

このソフトへのご意見等は、下記へお願いします。感想、バグ発見や改善のアイデアなどがありましたら歓迎します。最新情報や、他の自作ソフトなど の紹介 は、私のホームページにありますので、どうぞおいでください。

http://www.geocities.jp/qqbjj485/Q-soft/piper/Piper.htm

田畑 純 (休八)
たばた まこと (きゅうはち)