Curly braces in awk reg exp
awk, regex
Solution
Mac OS X `awk` (BSD `awk`) works with the first command shown:
$ echo "123" | /usr/bin/awk '/^[0-9]{3}$/ {print $1;}'
123
$
GNU `awk` does not. Adding backslashes doesn't help GNU `awk`. Using option `--re-interval` does, and so does using `--posix`.
$ echo "123" | /usr/gnu/bin/awk --re-interval '/^[0-9]{3}$/ {print $1;}'
123
$ echo "123" | /usr/gnu/bin/awk --posix '/^[0-9]{3}$/ {print $1;}'
123
$
(I'm not sure where `mawk` 1.3.3 dated 1996 comes from, but it is probably time to get an updated version of `awk` for your machine.)
Problem
I am trying to match a fixed number of digits using curly braces in `awk`but I get no result. ``` # This outputs nothing echo "123" | awk '/^[0-9]{3}$/ {print $1;}' # This outputs 123 echo "123" | awk '/^[0-9]+$/ {print $1;}' ``` Do I need to do something specific to use curly braces?