You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

grep使用含管道符的正则时未返回预期结果如何处理?

问题原因

  • 默认情况下grep使用**基础正则表达式(BRE)语法,|作为“或”逻辑分隔符的功能仅在扩展正则表达式(ERE)**中原生支持。在BRE语法下|会被识别为普通文本字符,而非逻辑运算符,你写的正则表达式里的|都被当成了要匹配的内容,自然无法匹配test.txt中的对应行。
  • 你使用的正则表达式末尾多了一个冗余的|,属于书写错误,即使切换到ERE语法,也会额外匹配空字符串,属于不必要的冗余内容。

修复方案

两种方案均可实现你的预期匹配效果:

  1. 给grep加-E参数启用扩展正则表达式,同时去掉末尾冗余的|:
grep -i -E "abc()|daf()|newname" test.txt
  1. 保持使用基础正则表达式,将所有|转义为\|,同时去掉末尾冗余的|:
grep -i -e "abc()\|daf()\|newname" test.txt

执行上述任意命令后,都会输出3行匹配结果:

abc()
daf()
newname

内容的提问来源于stack exchange,提问作者Rafiq Shaikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 19:45:02