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

Linux下如何在grep或egrep中匹配指定模式后接非指定模式的行

问题原因分析
  • 第一个方案失效:POSIX标准的egrep原生不支持PCRE风格的负向预查语法,只有开启了PCRE引擎的GNU grep才能识别这类高级正则规则。
  • 第二个方案失效:你全局过滤所有带pre的行,路径中的pre_deploy本身包含pre字符,导致最后一行被误过滤,需要限定pre的出现位置。
可行解决方案

方案1:使用PCRE模式的GNU grep(最贴近你原有写法)

开启-P参数启用PCRE正则引擎,即可识别负向预查规则,命令如下:

grep -P "/script/(upgrade|pre_deploy)/(?!pre)" script.txt

方案2:修正管道过滤逻辑(兼容性更好,无需PCRE支持)

调整反向过滤规则,只排除目录段后紧跟pre的行,不会误伤路径其他位置的pre,命令如下:

egrep "/script/(upgrade|pre_deploy)/" script.txt | egrep -v "/(upgrade|pre_deploy)/pre"

方案3:纯POSIX egrep写法(全环境兼容,无额外依赖)

不用预查和管道,直接用标准正则实现匹配逻辑:

egrep "/script/(upgrade|pre_deploy)/([^p]|p[^r]|pr[^e])" script.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:57:04