awk 正则表达式中的边界在 OpenBSD 上不起作用

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} 模式匹配。