이 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 사용자 영역은 업스트림에서 업데이트되지 않았습니다.

관련 정보