作者: Bunta
日時: 2008/8/30(00:07)
でびさん、こんばんは。

 どうも色々と想像を巡らしていただき、知恵をしぼっていただきありがとうご
ざいます。
 なのですが、GNU sed の移植版(mbsed は内蔵の pcre エンジン、onigsed は
鬼車)の話なので、以下のようなことを考えてくださる気持ちはよくわかるので
すが、違うと思うのです。(最初にそう思ったから、総動員してしまったわけで
すが。)

> 随分昔(新出さんのUNIX Like Toolsとかアスキーソフトウェア
> シリーズとかの頃)に、改行の扱いで同じような試行錯誤をした
> ことがあります。
> 結局その時は、Logos版で解決できましたが。

> 思いますに、
> パターン評価の段階で、\nという指定で通る/通らない。
> アクションの方で\nという指定で通る/通らない。
> この組み合わせなのではないでしょうか。

 分かります、ここはまず初めに落ちるところですからね。でもですね、(思い
出す必要がないかもしれませんが、思い出してみていただきたいのですが)

s/\n\n/\n/

は、古くは(正統的には)

s/\n\n/\

/
------

 と表現したわけです。    s/LHS/RHS/    なんて書き方をするのですが(Left
Handside  String/Right Handside String)、LHSに\nが表記できないsedは、い
くらなんでも存在しません。 そうしたら複行を扱えなくなってしまって、N,P,D
のコマンドの存在意義がなくなってしまうからです。

 で、 RHSですが、これは上のように改行をエスケープして表記していたのを、
さすがに見にくいというので、\nを許すようになったのが昨今のsedなわけです。
ですから、 egsed, ssed, mbsed, onigsedのテストのときだけ、s/\n\n/\n/と書
いたのです。汎用性を重んじれば、当然、 s/\n\n/\

/
--------
となります。(全部のsedsをテストしたときには、そうなってたでしょう)

> それで、\nという指定が通らない場合は、\[Enter]という表記をする、と。

 これは分かりません。GNU sedには、そういうのはないと思います、たぶん。
 ありますか?

> あるいは、「\r\nと書かねばイカンよ君ぃ〜」という仕様の可能性も…。

 分かりません。許せません(笑)。
 とはいえ、そうかぁ、日本語に移植するのって大変なんだよな、と(きっと
正しく)想像する機会をいただけました。m(__)m >two guys.

> 例えば、\xXXなどの文字コード番号の指定でマッチさせた場合はどうなのですか?

 これをお教えいただけませんか? SJISファイルしか使っておりませんので、
その種のオチはないと思いますが(願っていますが) 、CR+LFを\xXX形式で書く
とどうなるでしょうか。お教えいただけますでしょうか? \x0D0A ? m(__)m

 もっとも、これでも解決はしない、と思うのですけれど…。


 ちょっと関係なくて突然なのですが、sed.infoっていうのを意図されたとおり
に読むinfo.exe とかってWindows用にあるのでしょうか。ご存じでしたらお教え
ください。m(__)m


 onigsedとmbsedは、以下からDL可能です(Win環境で日本語を理解してくれる
最強のsedです。世界水準です!)。>興味のある方

http://www.kt.rim.or.jp/~kbk/sed/

Bunta