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

如何用Sed删除单行内指定模式间内容且保留模式本身

使用Sed实现单行内特定模式间内容的删除需求

嘿,这就给你搞定这个Sed的需求!要实现删除单行内第一个匹配的":"与后续可选的"Brown"/"Cat"/"Yellow"之间的所有内容,同时保留这两个模式本身,直接用下面这个命令就行:

sed -E 's/:([^BCY]*)(Brown|Cat|Yellow)/:\2/g'

命令拆解说明:

  • -E:启用扩展正则表达式,这样写括号不用额外转义,语法更简洁
  • s/匹配规则/替换内容/g:g表示全局处理单行内的所有匹配项,刚好对应你单行里多个需要处理的片段
  • 匹配规则部分:
    • ::精准匹配我们要保留的第一个模式
    • ([^BCY]*):捕获组1,专门匹配":"之后到目标词之前的所有内容——这里用[^BCY]是因为你指定的第二个模式都是以B、C、Y开头,这样能精准停在第一个目标词的位置,不会误删后续内容
    • (Brown|Cat|Yellow):捕获组2,匹配我们要保留的三个可选目标模式
  • 替换内容:\2:直接把匹配到的整段替换成保留的":"加上捕获组2的内容,完美去掉中间不需要的部分

示例验证:

输入文本:

:1543453 Brown Fox :789 123456 Cat :abcdef Yellow Duck

运行命令后输出:

:Brown Fox :Cat :Yellow Duck

完全符合你的预期!而且这个命令只会处理单行内容,绝对不会跨多行操作,完全满足你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:18:04