Subject: Re: Odd behaviour of sed with n/N and line ranges

From: Eric Blake <[email-masked]>
Date: Thu, 21 Jan 2016 13:02:12 -0700

This message came up on the POSIX list today, claiming GNU sed has a bug:

On 01/21/2016 12:02 PM, Rob Landley wrote:
> On Thu, Jan 21, 2016 at 4:38 AM, Geoff Clare <[email-masked]> wrote:
>> I'm seeing this with versions of sed derived from System V:
>>
>> $ printf '%s\n' a b | sed -e n -e '2s/b/c/'
>> a
>> c
>> $ printf '%s\n' a b | sed -e n -e '1,2s/b/c/'
>> a
>> b
> 
> Having recently implemented toybox sed from the posix spec, that's
> what my implementation is producing too.
> 
> You have to match the first line of a range in order to activate the
> range (numeric works same as /ascii/ that way). Since the above skips
> past the first line, you never activate the range, so later lines
> don't trigger the range contents either,
> 
> The gnu behavior is wrong. Replace the 1 with /a/ and the logic may be
> easier to follow
> 
> (But hey, at least the gnu guys finally fixed "sed p - -" segfaulting
> when it freed stdin the second time...)
> 
> Rob
> 
> 

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org