gpt4 book ai didi

regex - grep:-Pz 不支持未转义的 ^ 或 $

转载 作者:行者123 更新时间:2023-11-29 09:27:37 26 4
gpt4 key购买 nike

我想知道为什么在新版本的 grep (Ubuntu 16.04) 中我的 bash 脚本停止工作:

...
COMMIT_REGEX='^\[[A-Z]+-[0-9]+\] \s*\S+(?:.|\n|\r)*\s* \(review: ([a-z]+\.[a-z]+|MYSELF)\)$'

if ! grep -Paz "$COMMIT_REGEX" "$1"; then
...

我得到“grep: unescaped ^ or $ not supported with -Pz”。我试图转义 ^ 和 $ 符号,但没有帮助。

在 Ubuntu 15.10 脚本中完美运行。

最佳答案

看来问题是bug with grep -Pz的结果(感谢 Lars Fischer 以查找相关报告)。

我建议放弃 -P 开关并使用 -E 代替:

commit_re='^\[[A-Z]+-[0-9]+\] \s*\S+(.|\n|\r)*\s* \(review: ([a-z]+\.[a-z]+|MYSELF)\)$'

if ! grep -qEaz "$commit_re" "$1"; then

我所做的唯一更改是将 -P 更改为 -E 并添加 -q (安静)开关,因为您只对返回码感兴趣。您真的不需要非捕获组,所以我将其更改为普通组。

我也不喜欢看到 ALL_CAPS 变量名,因为它们实际上应该保留给 shell 使用。

关于regex - grep:-Pz 不支持未转义的 ^ 或 $,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37618736/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com