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 /\

