{}の代替正規表現

{}の代替正規表現

この行の数字だけを除いてすべて変更しようとしています。

looktype="123"

だから数字だけが表示されます。

これは簡単な方法で達成できますか?

{sub ("look type=\"[0-9]{0,3}", "TEST")}

私はこれを試していますが、awk成功しませんでした。私は"sub"と{0、3}が干渉すると信じています。

ベストアンサー1

存在する拡張正規表現(ERE)は、時間の間に繰り返されることを意味します。 awkは拡張正規表現を実装していますが、awkの歴史的実装には繰り返し間隔のこの中括弧構文はありませんでした。これX{m,n}XmnPOSIX規格awk が ERE をサポートする必要があることを指定しますが、既存の多くの実装は互換性がありません。

GNU awkを使って、間隔バージョン 4.0 以降のみサポートされます。以前のバージョンでは、POSIXLY_CORRECT環境変数をnull以外の値に設定して、gawkがPOSIXに準拠するように強制できます。

POSIXLY_CORRECT=1 awk '{sub ("looktype=\"[0-9]{0,3}", "TEST"); print}'

いくつかのディストリビューションでは、awkのデフォルトバージョンはgawkではなく、より小さく高速なmawkです。 Mawkは中括弧式をサポートしていません。この問題を解決するパッチがありますしかし、mawkは維持されていないので広く採用されていません。

繰り返し回数が少ない場合は、次のようにスペルを書くことができます。

awk '{sub ("looktype=\"[0-9]?[0-9]?[0-9]?[0-9]?", "TEST"); print}'

おすすめ記事