Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Nov 2015 19:28:53 +0100
From:      <rank1seeker@gmail.com>
To:        hackers@freebsd.org
Cc:        "Ian Lepore" <ian@freebsd.org>, "Chris H" <bsd-lists@bsdforge.com>
Subject:   Re: awk's curly braces (regex)
Message-ID:  <20151106192853.00005e57@gmail.com>
In-Reply-To: <3605b86a5de658159efd2e014a75b0e1@ultimatedns.net>
References:  <20151104211008.00006c16@gmail.com> <1446670398.91534.358.camel@freebsd.org> <3605b86a5de658159efd2e014a75b0e1@ultimatedns.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 04 Nov 2015 19:36:29 -0800
"Chris H" <bsd-lists@bsdforge.com> wrote:

> On Wed, 04 Nov 2015 13:53:18 -0700 Ian Lepore <ian@freebsd.org> wrote
> 
> > On Wed, 2015-11-04 at 21:10 +0100, rank1seeker@gmail.com wrote:
> > > 10.2-RELEASE-p6
> > > 
> > > # awk --version
> > > awk version 20121220 (FreeBSD)
> > > 
> > > # echo 2015 | awk '/^[0-9]/ {print}'
> > > Prints '2015'
> > > 
> > > # echo 2015 | awk '/^[0-9]{4}/ {print}'
> > > Won't
> > > 
> > > Why range/interval specified via curly braces doesn't work.
> > > PS: Yes I've tried escaping it with backslahes and double
> > > backslahes, nada!
> > > 
> > > man pages:
> > > --
> > > Regular expressions are as in egrep; see grep(1).
> > > --
> Your SHELL can be a "gatcha", as well.

I know my shell.
Soner or later it always ends up in script => /bin/sh 

> > 
> > For what it's worth, the manpage on a linux system I checked also
> > says the regex is like egrep, but then it points out that one
> > difference is "interval expressions" (curly brace stuff) which it
> > says are "likely to break old awk programs" so they're only enabled
> > if --posix or --re -interval options are given.  Our awk doesn't
> > seem to support those options.
> > 
> > I guess our awk might also avoid the interval expressions out of
> > caution for breaking old programs; maybe we need to add the options
> > to enable them, like gnu awk has.
> > 
> > -- Ian


Then, mentioned part of man pages has been blindly pasted.
awk's curly braces don't work as regex in FreeBSD, nor can it be
enabled.

Here is a proof that regex curly part is matched literally:
# echo '2015{40}' | awk '/^[0-9]+{40}/ {print}'
2015{40}

You devs decide best solution for awk, but for start, you can edit man
pages at least.


Thx,
Domagoj



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20151106192853.00005e57>