awk's curly braces (regex)

Ian Lepore ian at freebsd.org
Wed Nov 4 20:53:27 UTC 2015


On Wed, 2015-11-04 at 21:10 +0100, rank1seeker at 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).
> --

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



More information about the freebsd-hackers mailing list