On Thu, Jul 28, 2016 at 12:55:40PM +0200, David Vasek wrote: > On Thu, 28 Jul 2016, Jiri B wrote: > > >Hi, > > > >I can't understand a difference between OpenBSD and GNU sed when > >handling '\+' (one or more). > > > >Example: > > > >$ echo 'tzdata-2016a-1.el7.noarch.rpm' | sed 's/\(tzdata\)\+.*/\1/' > >tzdata-2016a-1.el7.noarch.rpm > >$ echo 'tzdata-2016a-1.el7.noarch.rpm' | gsed 's/\(tzdata\)\+.*/\1/' > >tzdata > > > >$ echo '1123456' | sed -n '/1\+23456/p' > >$ echo '1123456' | gsed -n '/1\+23456/p' > >1123456 > > > >A bug or some hidden trick? > > A bug in you example. Character '\+' is a plus, not "one or more". > > For "one or more" you need '+' and extended regular expressions turned on > with option -E. GNU sed probably has a different opinion about what > operators are basic RE. See re_format(7).
$ echo 'tzdata-2016a-1.el7.noarch.rpm' | sed -E 's/(tzdata)+.*/\1/' tzdata $ echo '1123456' | sed -En '/1+23456/p' 1123456 Thank you! j.

