作者: Bunta
日時: 2008/8/30(01:39)
藤岡さん

 onigsedとmbsedのバグ出しにおつき合いください。疑って、いいものに成長させる
価値のある道具であることは間違いがないので。


>  このスクリプトで、なぜデリミタの前を見ることができるのか説明していただ
> けますか。sedを思い出したいので^^)

 そのスクリプトではありません。最初の発言をみてください。

【#2436からの引用】(変態なsedでなければ通じるはず)
===== test.sed =====
# デリミタ"---"の前が改行でないなら改行挿入
$!N
/^[^\n][^\n]*\n---$/{
        s/\n/\
\
/
        P
        s/[^\n]*\n//
                }
P
D
====================

 そして、以下は
【#2437からの引用】

純粋に不具合発見用のテストをしました。

=====================
aaa
---
=====================

といった入力が

=====================
aaa

---
=====================
となれば正解のはずです。


------- test.sed -------
#egsed(GNU4.0.7), ssed, onigsed
$!N
/^aaa\n---$/{
	s/\n/\n\n/
	P
#	s/aaa\n//		# こうなら誤って2つ消しはしない
#	s/[^\n]*\n//		# これだと2つ消す
	s/[^\n]\+\n//		# これでも2つ消す
}
P
D
------------------------
 これがバグ特定用(つもり)です。詰められていません。


>  昔のsedは、s/^---$/\n&/の書き方を許さなかったのです。

 はい、
s/^---$/\
&/
 でしょう、正統的には。アンサパンドがそこで通じるかは申し訳ありませんが
分かりませんけれど。

Bunta