U. *_*ndl 7 awk locale pattern-matching
在编写一些awk代码时,我使用了4.1.0--lint的选项gawk。令我惊讶的是我收到了警告
警告:“[ob]”形式的范围取决于区域设置
但我的代码只有foo-bar字符类的外部。简化示例:
{ match($2, /^uid=([^,]+),dc=foo-bar$/, m) }
Run Code Online (Sandbox Code Playgroud)
另外我认为 gawk 4.2.1 不再输出该警告,那么这是一个错误吗gawk?
Gil*_*il' 18
这是 Gawk 4.1.0 中的一个错误。它由a7c502a756732ec9a1773d6169376bb7b25f4308引入,并由d52d17b46e53bb0d4a991cd32f859eb349d3b101修复。该错误在 4.1.0 中首次发布,修复程序在 4.1.1 中首次发布。
这只是 linter 中的错误,而不是用于实际将文本与正则表达式匹配的代码中的错误。
该错误导致 linter 在查找集合中的范围时继续查看结束括号,因此当它看到 时[set]more stuff with a-dash,它会到达后续位置-并发出警告。一种解决方法(如果您确实需要针对旧版本中仅 linter 错误的解决方法)是将破折号本身放在一个范围内:/^uid=([^,]+),dc=foo[-]bar$/在您的情况下。这可能不适用于所有极端情况。