私は、次のように制限された正規表現数量子を指定する概念に精通しています。
Quantifier Legend Example Sample Match
{3} Exactly three times \D{3} ABC
{2,4} Two to four times \d{2,4} 156
{3,} Three or more times \w{3,} regex_tutorialer
mawk
ただし、マニュアルページやオンラインでは上記のような内容が見つかりません。
このmawk
コマンドにこの機能はありますか?それとも同じ効果を得る他の方法はありますか?
バージョンを使用しています1.3.3
答え1
POSIX準拠の実装は空白の正規表現演算子をサポートしますawk
。
ただし、awk
最初はサポートされていなかったため(nawk、mawk、またはgawkはすべてサポートされていません)、それをサポートしていない実装はまだいくつかあります。mawk
、これ本当の奇妙なk
(もともとBrian Kernighanによって管理されていますawk
)数日前、Solaris /bin/awk
、Solaris /bin/nawk
、awk
ほとんどのBSD。
BREと同様に、一部の実装では以前のバージョンとの互換性が損なわれる可能性があるため、サポートを追加することに反対します(BREで使用されているものと同様の問題はありegrep
ません)。\{x,y\}
grep
\w
、\d
は通常サポートされていません(busyboxおよび(POSIXモードではない場合)\D
サポート)Perl正規表現拡張です。標準に対応する項目はそれぞれですが、まだサポートされていません。awk
gawk
\w
[[:alnum:]_]
[[:digit:]]
[^[:digit:]]
mawk
Solarisでは使用する必要があります/usr/xpg4/bin/awk
。
以前のバージョンのGNUでは、awk
このオプションを使用するか、正規表現間隔をサポートする環境で起動する必要があります--re-interval
。POSIXLY_CORRECT=anything
これをサポートしない実装の場合?
、+
および次のものを組み合わせて使用できます*
。
x{1,3}
->xx?x?
または(x|xx|xxx)
x{1,}
->x+
x{0,}
->x*
x{3,}
->xxx+
またはxxxx*
x{3,6}
->xxxx?x?x?
- など。
とにかくローカライズ文字やマルチバイト文字はサポートされmawk
ていないので、ASCII文字に制限して[_a-zA-Z]
、[0-9]
[^0-9]