このawk式は、OpenBSDで期待どおりにinet 34.45
を出力します。
echo "inet 34.45" | awk '/inet [0-9]+\./ { print }'
ただし、+
をバインドされた{1,3}
に置き換えると、一致しません。
echo "inet 34.45" | awk '/inet [0-9]{1,3}\./ { print }'
どちらの式も、gawkを使用するLinuxで期待どおりに機能します。 gawkのmanページには、インターバル式と呼ばれるものがもともとawkでサポートされていなかったが、後でegrepとの一貫性を保つためにPOSIXに追加されたと記載されています。 OpenBSDのawkのマニュアルページでは、そのようなことは言及されておらず、通常どおり境界を指定するre_formatのマニュアルページを参照しています。
これはバグか、OpenBSD awkの文書化されていない制限ですか?
その制限は正確に文書化されています。
差出人: http://man.openbsd.org/awk.1#STANDARDS
基準
Awkユーティリティが{n、m}パターンマッチングをサポートしないことを除いて、awkユーティリティはIEEE Std 1003.1-2008(“ POSIX.1”)仕様に準拠しています。