Wil*_*ard 12 bsd awk bugs macos
显然,包含字符类的 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 $
Run Code Online (Sandbox Code Playgroud)
在 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 $
Run Code Online (Sandbox Code Playgroud)
这在任何地方都有记录吗?或者,如果它是一个错误,它是一个已知的错误吗?(如果它是一个已知的错误,它是否会在更高版本的 Awk 中修复?)
我应该如何处理这个发现? 有什么地方我应该打开错误报告吗?
小智 1
在 FreeBSD 11.2-RELEASE 上的测试匹配了正确的结果,并且与最新的 GNU/Linux 上的结果匹配。
也许该行为是此处描述的错误的更一般情况:https ://github.com/onetrueawk/awk/issues/45
至于提交错误,由于错误本身似乎已经修复,剩下的问题是苹果远远落后于“上游”,你可以尝试这个(尽管我之前没有经历过):https://developer.apple.com/bug-reporting/
请注意最后一个选项,这可能是 B 计划,如果我们可以放心地假设在他们当前的 Beta 版本中,他们仍然没有从上游更新 UNIX 用户区。