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

如何使用sed命令删除从‘GOOD1 bad’到分号的多行内容?

用sed跨多行删除指定内容的解决方案

直接执行以下sed命令即可完成需求:

sed -i '/^GOOD1 bad/,/;/d' filename.txt

命令详解

  • /^GOOD1 bad/:精准匹配以"GOOD1 bad"开头的行,作为删除区间的起始标记
  • /;/:匹配包含分号的行,作为删除区间的结束标记(包含该行)
  • ,:连接前后两个匹配规则,指定要处理的连续行区间
  • d:对匹配到的区间执行删除操作
  • -i:直接修改原文件(若仅需预览处理结果,去掉-i参数即可)

原命令失效原因

你之前用的sed -i -e {s/GOOD1 bad//g} filename.txt是单行文本替换逻辑,仅能删除单行内的"GOOD1 bad"字符串,但目标内容是跨多行的连续块,这种单行替换方式无法覆盖多区间的删除需求,因此没有效果。

示例验证

处理前内容:

LUCK bad (
.abc(abc),
.bcd(bcd),
.def(def));
GOOD1 bad (
.abc(abc),
.bcd(bcd),
.def(def));

处理后内容:

LUCK bad (
.abc(abc),
.bcd(bcd),
.def(def));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:57:35