参考这个关于 AU 的问答。
为什么 GNUgrep
使用-Pz
参数的行为发生了变化并且不支持行首^
和$
行尾锚点?
这是错误还是正确的行为?
在内核版本为 4.4.0-21-generic 的 Ubuntu 16.04 上测试。
$ echo ^ | grep -Pz ^
grep: unescaped ^ or $ not supported with -Pz
Run Code Online (Sandbox Code Playgroud)
这是 GNU grep 2.24 版(2016 年 3 月 10 日发布)及更高版本的预期行为,这是对 GNU grep 2.5 中引入的错误的修复。
if (*p == '$' || (*p == '^' && !after_unescaped_left_bracket))
die (EXIT_TROUBLE, 0,
_("unescaped ^ or $ not supported with -Pz"));
Run Code Online (Sandbox Code Playgroud)
此更改于 2016 年 2 月 21 日进行,有关此更改的更多详细信息,请参阅此错误报告。
虽然这是GNU grep的选择,这是一个错误,因为GNU的grep编译PCRE正则表达式与PCRE_MULTILINE
集,并也收归同时呼吁多个记录pcre_exec,这是问题的根源,如指出,由斯特凡Chazelas
归档时间: |
|
查看次数: |
885 次 |
最近记录: |