Fab*_*ann 8 awk openbsd regular-expression
这个 awk 表达式inet 34.45
在 OpenBSD 上按预期打印:
echo "inet 34.45" | awk '/inet [0-9]+\./ { print }'
Run Code Online (Sandbox Code Playgroud)
但是,当我用+
bound替换 the时{1,3}
,我没有得到任何匹配:
echo "inet 34.45" | awk '/inet [0-9]{1,3}\./ { print }'
Run Code Online (Sandbox Code Playgroud)
这两个表达式在带有 gawk 的 Linux 上都按预期工作。gawk 手册页提到它所谓的区间表达式最初不受 awk 支持,但后来添加到 POSIX 以与 egrep 保持一致。OpenBSD 上的 awk 手册页没有提到这样的事情,只是引用了 re_format 的手册页,它像往常一样指定了边界。
这是 OpenBSD awk 的错误还是某些未记录的限制?
Pau*_*ant 15
该限制已被精确记录。
来自:http : //man.openbsd.org/awk.1#STANDARDS
标准
awk 实用程序符合 IEEE Std 1003.1-2008(“POSIX.1”)规范,除了 awk 不支持 {n,m} 模式匹配。