作者: 藤岡和夫
日時: 2008/8/31(13:20)
On Sun, 31 Aug 2008 11:47:17 +0900
Bunta <hi9t-ooy@...-net.or.jp> さんwrote:

> > 特に複行の場合は、パターンスペースで行末に\nがないと次の行が後ろに入っ
> >たときに行の区切りが分からなくなりますね。Pコマンドは最初の改行までを出
> >力するわけですから。そしてDコマンドは最初の改行までを削除するわけですか
> >ら。
> > そのように、Doughertyのsed & awkには書いてありますね。それでループがう
> >まく回るので納得したのですが^^;)パターンスペースに読み込んで改行が取られ
> >ると複行処理ができないのでは。
> 
>  うーん、納得されていてうまくいくようならその解釈でよいのでしょう。
>  ただ最後の「複行処理ができないのでは」の部分は、()書きしたでしょ。
> (複行は別)と。問題はタイミングなんです、たぶん。
> 
>  単行のデフォルト読み込みではパターンスペースに改行文字はありません。
> 「^aaa$」です。
>  「aaa\nbbb」ができあがった複行だとします。\nはいつ出現したのか。
> 「Nでbbbを読み込んだとき」というのが僕の解釈です。なので、この時点では、
> 「bbb」の後ろには【まだ】\nがない、と。別の言い方をすると、次のNで
> 「aaa\nbbb\nccc」となるときに「bbb」のあとの\nが追加される。藤岡さんの
> 解釈と微妙に違いますよね。

 これについては、最初から改行がついていても、Nで次の行を読み込むときに
前の文字列に改行を付加しても、実装は別にして結果が同じなので一応了解です
ね。もともと存在しているものをなぜわざわざはずしたり付けたりする必要があ
るのか無駄な感じがしますが。

藤岡 和夫
kazuf@...
日曜プログラマのひとりごと http://homepage1.nifty.com/kazuf/renewal.html