Hi,

So what 'sed' shall do when  match[0].rm_so i==0 ?

Regards.

2011/6/15 Alexander Hall <[email protected]>

> On 06/15/11 08:35, Otto Moerbeek wrote:
> > On Wed, Jun 15, 2011 at 07:44:20AM +0200, Otto Moerbeek wrote:
> >
> >> On Tue, Jun 14, 2011 at 11:56:27PM +0200, sven falempin wrote:
> >>
> >>> Hello,
> >>>
> >>> Indeed there is a small problem:
> >>>
> >>> # echo 'abbbbbbbbbbbbbfffff' | sed -E 's/[a$]/x/g'
> >>> xbbbbbbbbbbbbbfffff
> >>
> >> That is expected. $ is only special when it ocurs as the list char of
> >> a re.
> >>
> >>> # echo 'abbbbbbbbbbbbbfffff' | sed -E 's/a|$/x/g'
> >>> x
> >>
> >> This is likely to be a real bug.
> >>
> >>>
> >>> String modification is done inside the 'case 0:'
> >>> substitute(struct s_command *cp) in src/usr.bin/process.c
> >>>
> >>> But the problem may comme from regexec_e.
> >>>
> >>> Maybe openbsd devs should test another regexp code version ?
> >>
> >> Why? If we should change libs on every bug encountered, nothing will
> >> be left.
> >>
> >> Anyway, thanks for the report.
> >>
> >>      -Otto
> >>
> >>>
> >>> Hope it helps,
> >>> Who still use sed anyway :)
> >>>
> >>> Regards.
> >>>
> >>> 2011/6/12 Ingo Schwarze <[email protected]>
> >>>
> >>>> Hi Nils,
> >>>>
> >>>> Nils Anspach wrote on Sun, Jun 12, 2011 at 12:49:42PM +0200:
> >>>>
> >>>>> I have an issue with sed. Why does
> >>>>>
> >>>>>       echo 'ab' | sed -E 's/a|$/x/g'
> >>>>>
> >>>>> give 'x' whereas
> >>>>
> >>>> I sense a bug here.
> >>>> Tracing a bit around process(),
> >>>> it looks like the first application of the s command
> >>>> yields dst = "x" continue_to_process = "b\n",
> >>>> and then the second application
> >>>> appends "\n" to dst (should rather append "b", i think).
> >>>> Maybe something is wrong here with character/pointer counting,
> >>>> but i'm somewhat out of time now for tracing.
> >>>>
> >>>> This is worth more investigation.
> >>>>
> >>>> Yours,
> >>>>   Ingo
> >>>>
> >>>>
> >>>
> >>>
> >>> --
> >>>
> ---------------------------------------------------------------------------------------------------------------------
> >>> () ascii ribbon campaign - against html e-mail
> >>> /\
> >
> > This dif fixes your problem here. Big question is of course: does it
> > break other cases?
>
> It differs from perl like this:
>
> $ echo 'l1_1' | perl -pe 's/1|$/X/g'
> lX_XX
> $ echo 'l1_1' | sed -E 's/1|$/X/g'
> lX_X
>
> Meaning we don't hit that final '$' if the last match went to eol.
>
> /Alexander
>



-- 
---------------------------------------------------------------------------------------------------------------------
() ascii ribbon campaign - against html e-mail
/\

Reply via email to