このBSD Awk文書化された動作はバグですか?

このBSD Awk文書化された動作はバグですか?

明らかに、BSD Awkの文字クラスを含む角括弧式は、文字クラスの後に続く他の文字を無視します。

MacOS $ cat file.txt
_
-
.
a
B
8
:
;
@
~
,
MacOS $ awk '/[@~.[:alnum:]:;-]/' file.txt 
.
a
B
8
@
~
MacOS $ awk '/[-;:@~.[:alnum:]]/' file.txt 
-
.
a
B
8
:
;
@
~
MacOS $ awk '/[^@~.[:alnum:]:;-]/' file.txt 
_
-
:
;
,
MacOS $ awk '/[^-;:@~.[:alnum:]]/' file.txt 
_
,
MacOS $ 

GNU Awk(Ubuntu 16.04に表示)では動作が異なります。角かっこ式の他の文字は、文字クラスの前であっても後ろであっても、同じように扱われます。

Linux $ cat file.txt
_
-
.
a
B
8
:
;
@
~
,
Linux $ awk '/[@~.[:alnum:]:;-]/' file.txt 
-
.
a
B
8
:
;
@
~
Linux $ awk '/[-;:@~.[:alnum:]]/' file.txt 
-
.
a
B
8
:
;
@
~
Linux $ awk '/[^@~.[:alnum:]:;-]/' file.txt 
_
,
Linux $ awk '/[^-;:@~.[:alnum:]]/' file.txt 
_
,
Linux $ 

これはどこにも文書化されていますか?それともバグならそうです。みんな知ってる抜け穴? (これが既知のバグなら、Awk以降のバージョンで修正される予定ですか?)


この発見で何をすべきですか? バグ報告はどこでオンにする必要がありますか?

ベストアンサー1

FreeBSD 11.2-RELEASEでテストすると、正しい結果が得られ、GNU / Linuxの最近の結果と一致します。

おそらく、この動作はここで説明されているバグのより一般的なケースです。https://github.com/onetrueawk/awk/issues/45

バグの報告に関しては、バグ自体は修正されているように見え、残りの問題はAppleが「アップストリーム」よりもずっと遅れているということです。https://developer.apple.com/bug-reporting/

最後のオプションに注意してください。現在のベータ版からまだUNIXユーザー領域はアップストリームで更新されていません。

おすすめ記事