awk正则表达式中的卷曲括号

时间:2013-03-23 18:33:12

标签: regex awk

我正在尝试使用awk中的花括号来匹配固定数量的数字,但我没有得到任何结果。

# This outputs nothing
echo "123" | awk '/^[0-9]{3}$/ {print $1;}' 

# This outputs 123
echo "123" | awk '/^[0-9]+$/ {print $1;}' 

我是否需要做一些特定的事情来使用花括号?

1 个答案:

答案 0 :(得分:9)

Mac OS X awk(BSD awk)使用显示的第一个命令:

$ echo "123" | /usr/bin/awk '/^[0-9]{3}$/ {print $1;}' 
123
$

GNU awk没有。添加反斜杠对GNU awk没有帮助。使用选项--re-interval可以,使用--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
$

(我不确定1996年的mawk 1.3.3来自哪里,但现在可能是时候为你的机器获得awk的更新版本了。)