でびさん、こんばんは。
どうも色々と想像を巡らしていただき、知恵をしぼっていただきありがとうご
ざいます。
なのですが、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