正規表現エンジンとして、 鬼車を組み込んだ sed です。オプション指定により、POSIX EREや Perl5互換の正規表現を使うことができます。
・これはなに? GNU sed 4.1.5 の日本語 Windowsへの移植(というほどたいしたことは していない)です。cygwinに付属のGNU sedがMBCS対応していないので 作業しました。VC++ 7.1でコンパイルしています。特にDLLは必要あり ません。また、正規表現エンジンとして鬼車(2.5.0)を組み込んでおり、 オプション指定によりPerl互換の正規表現を使うことができます。で きるだけオリジナルと同じ振る舞いをするように努力しましたが、 どこかに抜けがあるかもしれません(特に改行の扱いに関して)。 ・ソースコードについて 以前はアーカイブに差分パッチを含めていましたが、現在は含めていません。 これは変更したソースコードの公開をしないということではなく、求めが あればその時点での最新のソースコード一式をお渡しする用意があります。 また、どこか適当な場所にsvnなりcvsなりのリポジトリ(別にそのほかの SCMでもいいですが)が持つことができないか検討中です(お勧めの場所があれ ば教えてください)。 ・再配布について GNU sed はフリーソフトウェアです。COPYINGというファイルに記載 されている条件に従って自由に再配布することができます。 新設されたオプション: 漢字コードとしてshiftjis、euc-jp、utf-8 が使えます。使用するときは コマンドラインオプションで ・shiftjis -Wctype=SJJIS または --ctype=SJIS (デフォルト) ・euc-jp -Wctype=EUC または --ctype=EUC ・utf-8 -Wctype=UTF8 または --ctype=UTF8 を指定します。マルチバイト処理をオフにしたい場合には -Wctype=ASCII または --ctype=ASCII を指定します。 拡張された機能: 環境変数 SEDPATH にディレクトリパスを指定することにより、スクリ プトを検索するパスを指定することができます。ディレクトリはセミ コロンで区切ることにより複数指定することができます。なお、SEDPATH を指定した場合、カレントディレクトリは検索パスにない限り検索の 対象としませんので注意してください。 おまけ パッチの使い方: 添付したmbc-diffというファイルは GNU sed 4.1.4に対する差分ファイル です。自分でコンパイルするには、 1) オリジナルを展開する 2) ソースのlibディレクトリに cd する 3) regex_h を regex.h にコピーする 4) ソースのベースディレクトリ(sed-4.1.2)で patch < mbc-diff を実行 する。 5) sed ディレクトリに cd する 6) make とします。 変更履歴: 2004年11月17日 とりあえずVC++でコンパイルできるようにしてみた。 2004年11月22日 環境変数SEDFILEを参照するように拡張。 2004年11月24日 参照する環境変数をSEDFILEからSEDPATHに変更。 2004年12月22日 正規表現エンジンとして鬼車を組み込む。 2004年12月28日 Perl互換正規表現使用時 \d が十進数字にマッチしていなかったのをfix。 2005年1月7日 POSIX BREを受け付けていなかったのをfix。 2005年5月19日 s/コンピューター/コンピュータ/ などがエラーになっていたのをfix。 s/USSR/ソ連/ などで文字化けしていたのをfix。 2005年5月31日 POSIX BREを受け付けないバグが復活していたのを再度fix。 ベースをGNU sed 4.1.4に変更。 2005年8月5日 UTF-8の取り扱いにバグがあったのでfix。 2005年8月22日 スクリプトの指定をフルパスで行ったときにオープンに失敗するバグをfix。 2005年12月20日 拡張POSIXクラス[:zenupper:]が誤動作していたのをfix(鬼車バージョンは変更なし)。 2007年4月7日 鬼車を組み込んでいないほうのバージョンで、GNU拡張のメタ文字(\< \>, \b \B)が --ctype=ASCII以外のときに正しく動作していなかったのをfix。 2007年7月13日 マルチバイト環境のときに、文字クラスの判定を間違えることがあったオリジナルの バグを修正。 2009年1月1日 正規表現で文字クラスを使ったときに']' の解釈が本来の仕様どおりでなかった部分を 修正。 2009年5月25日 正規表現の文字クラスの動作がおかしかったのをfix。