「警告:「[ob]」形式の範囲はロケールによって異なります。」はgawk 4.1.0のバグですか?

「警告:「[ob]」形式の範囲はロケールによって異なります。」はgawk 4.1.0のバグですか?

いくつかのコードの作成中に4.1.0のオプションをawk使用しました。驚いたことに警告を受けました--lintgawk

警告:「[ob]」形式の範囲はロケールによって異なります。

しかし、私のコードはfoo-bar文字クラスの外にのみあります。単純化された例:

{ match($2, /^uid=([^,]+),dc=foo-bar$/, m) }

また、gawk 4.2.1ではこれ以上警告を出力しないようですが、これはバグですかgawk

答え1

これはGawk 4.1.0のバグです。出身ですa7c502a756732ec9a1773d6169376bb7b25f4308そしてによって固定d52d17b46e53bb0d4a991cd32f859eb349d3b101。バグは4.1.0で最初にリリースされ、修正は4.1.1で最初にリリースされました。

これはLinterのバグに過ぎず、実際にテキストを正規表現に一致させるために使用されるコードのバグではありません。

このバグが原因で、 linter はコレクション内の範囲を探すときに閉じ括弧をチェックし続けるので、それを検出すると[set]more stuff with a-dash次の場所に到達して-警告を表示します。 1つの回避策(以前のバージョンのリンター専用のバグの回避策が本当に必要な場合)は、ダッシュ自体を特定の範囲に置くことです/^uid=([^,]+),dc=foo[-]bar$/。すべての場合で動作しない可能性があります。

関連情報