grep 带有 -P (=PCRE) 和 ext 正则表达式模式 (?(cond)yes-pat) 尽管不匹配但仍输出行,我错在哪里?

grep 带有 -P (=PCRE) 和 ext 正则表达式模式 (?(cond)yes-pat) 尽管不匹配但仍输出行,我错在哪里?

我正在使用 grep 版本

grep (GMU grep) 3.0

我尝试了以下测试代码,结果如下:

echo "ab" | grep -P '(?<=a)b'; WE_retcod=$?

产量

ab (b 有色)

retcode 为 0

好的

echo "ab" | grep -P '(?<=c)b'; WE_retcod=$?

产量

没有输出

retcode 为 1

好的

echo "ab" | grep -P '(?(?<=a)b)'; WE_retcod=$?

产量

ab (b 有色)

retcode 为 0

好的

echo "ab" | grep -P '(?(?<=c)b)'; WE_retcod=$?

产量

ab(b 无色)

retcode 为 0

错误的

我认为,grep 不应输出任何内容,退出代码应该是 1。

我做错什么了?

问候

相关内容