Re: sed -i
- From: Yar Tikhiy <yar@xxxxxxxxxxxxxxxx>
- Date: Fri, 30 Mar 2007 21:21:33 +0400
On Thu, Mar 29, 2007 at 11:19:44AM +0300, Diomidis Spinellis wrote:
Yar Tikhiy wrote:
Recently noticed that our sed(1) differs from its GNU analog in
that in -i mode it considers all files as a single sequence of lines
while the latter treats each file independently. The in-line mode
isn't in POSIX, so it isn't really clear which way is correct.
Here is a couple of practical consequences:
- our sed won't act on a numeric range of lines in each file,
as in: sed -i '' 2,5d *, which may be counter-intuitive.
- our sed's line ranges can span file boundaries in -i mode.
If the second feature isn't important, I think we should use
a separate line space for each file edited in-line, which is
usually desired.
Comments?
P.S. Attached are a test script and outputs from it for our
sed and GNU sed as found in a Linux I have access to.
I believe the GNU interpretation of lines in -i makes sense.
Hurray! I've got a blessing from the author of BSD sed himself! :-)
Thank you!
May I take a bit more of your time?
I've started playing with the code and noticed another gray area.
Namely a `c' command won't print the text if having 2 addresses
with the 2nd address beyond the actual end of file. For example:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BEGIN
$ jot 9 |
sed '6,15c\1
text
' test
2
3
4
5
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END
Ditto with RE's, if the 2nd RE doesn't match any line:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BEGIN
$ jot 9 | sed '/6/,/15/c\
text1
' test
2
3
4
5
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% END
If we've started to delete the pattern space, we should print the
text in place of it because `c' is for `change'. BSD and GNU seds
have this bug, but Solaris sed doesn't have it. Do you think we
should fix it, too?
Thanks!
--
Yar
_______________________________________________
freebsd-hackers@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"
- Follow-Ups:
- Re: sed -i
- From: Yar Tikhiy
- Re: sed -i
- From: Diomidis Spinellis
- Re: sed -i
- References:
- sed -i
- From: Yar Tikhiy
- Re: sed -i
- From: Diomidis Spinellis
- sed -i
- Prev by Date: Re: sed -i
- Next by Date: Re: sed -i
- Previous by thread: Re: sed -i
- Next by thread: Re: sed -i
- Index(es):