作者: Bunta
日時: 2008/8/31(00:03)
藤岡さん

>後、ホールドスペースの使い方を理解すれば、sedのスペシャリストになれそう^^;)

 是非是非なってください。 茨の道でしょうけどね。不必要なことまで sed で
やりたくなって初めて、スペシャリストというものでしょう。(^^; ほんと?
 僕はそのような野望は間違っても抱かず、生涯 sed 初心者でいきます。:-)

 たぶん、余計なことだと思いますが(知ったかぶりするつもりなんて毛頭ない
ですよ)

>> 	P 		#(3)「aaa」出力 
>			→「aaa\n」出力ですね。
>> 	s/^aaa\n// 	#(4) これにより PS は「\n---」となる 
>					→「\n---\n」となる★

 僭越ですけれど、ここだけ確認させていただきます。パターンスペースに行を
読み込んだら改行は取られます。 出力するときに付けられます。(複行は別)
→「\n---\n」となる★、ここが気になりました。デバッガも「$」って書いてく
れてますよね。

>> とsedのBREでは記述されると思います。([^\n]*と略記して同じだと思いますが)
> 「[^\n][^\n]*」と「[^\n]*」は当然ながら意味が違います。後者だと空のパ
>ターンにもマッチしてしまいますから。

 これはまったくその通りですね。間違えました。言い訳ですが、2つ目の置換
時にはもう必要ない、というのが頭にあったようです。

> もう一つ試したのは、もっと広い範囲でマッチするように「^..*\n---$」です
>けど、これもマッチしませんでした。「.」は「[^\n]」の意味ですから当然かも
>しれませんね。

 なるほど、そうですか。これで情報が1つ増えましたね。よかった。



 再現したそうです >Bruce.神さまぁ(いや、確かサンタクロースだった)
 12/24 まででよいですから、お願いします。m(__)m


 元のはいちおう理由があって(ロジックが分かりやすかったでしょ)ああなっ
ているのですが、以下のように書いたほうがすっきりするかもしれません。

-------------------------
$!N
/^[^\n][^\n]*\n---$/{
	P
	s/^[^\n]*//
}
P
D
-------------------------
 こ、こうなると、す、すげえなぁ。これだけ?

Bunta