作者: Bruce.
日時: 2005/4/25(00:17)
Bruce.です。

Bunta さんは書きました (2005/04/24 15:27):

> mbsed --versionで4.1.2のまま?
そのようです。ミスりました。

> mbsedで0(ゼロ)レンジが効かない(これはonigsedも)
> 
> mbsed -e "0,2d"					NG
> onigsed -e "0,2d"				NG
> egsed -e "0,2d"		(GNU 英語のみ4.0.7)	OK
> 
>  なんか僕は実験をまちがえていますのでしょうか?
> mbsed -e "0,2s/^/■/"でも挙動不審でした。→0レンジがいけない。
> 
>  正確には分からないのですが、 "0,n" のようなアドレッシングは、GNU4 くら
> いからの拡張で、 "1,2d" では1行目の処理ができない、という点を改善したも
> のと理解しています。 もちろん、"0,2d" は、「1行目と2行目を削除」という
> 意味のはずです。
>  あ、しっかり英語のwarningが出ていました。"invalid usage of line address 0"
> 確認したら、レンジ指定一般はいいようです。

ドキュメントを見ると以下のようになっています。

`0a' does not work (gives an error)
     There is no line 0.  0 is a special address that is only used to
     treat addresses like `0,/RE/' as active when the script starts: if
     you write `1,/abc/d' and the first line includes the word `abc',
     then that match would be ignored because address ranges must span
     at least two lines (barring the end of the file); but what you
     probably wanted is to delete every line up to the first one
     including `abc', and this is obtained with `0,/abc/d'.

なんで、カンマの後には正規表現によるアドレス指定が来る必要が
あるようです。

ためしに

   mbsed -e "0./abc/d"

とかやると、1と0のときで動作がきちんと変わります。4.0.7で分太さんの
いうように動作するというのはちと分かりませんが。

-- 
木村浩一
  I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
  mail kbk@...
	web  www.kt.rim.or.jp/~kbk/index.html#zakkicho
	     homepage3.nifty.com/farstar/