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

如何使用sed将两个模式间的多行内容替换为指定文件内容?

嘿,这个文本替换需求用sed就能轻松搞定,我给你详细说说怎么做:

核心命令实现

直接用这条sed命令就能完成替换,它会精准定位begin到end的内容块(包含这两个标记行),并替换成file2.txt里的内容:

sed -e '/^begin$/,/^end$/{/^begin$/{r file2.txt' -e '};d}' file1.txt

命令逻辑拆解

我给你拆解开每个部分的作用,方便你理解:

  • /^begin$/,/^end$/:精准匹配从**单独一行的begin到单独一行的end**的内容范围,避免误匹配那些包含begin/end字样的其他行
  • /^begin$/{r file2.txt' -e '}:当匹配到begin行时,读取file2.txt的全部内容插入到这个位置
  • d:删除整个begin到end范围内的所有行(包括begin和end本身)
原地修改文件(直接更新file1.txt)

如果想直接修改原文件而不是只输出结果,加上-i参数即可:

  • Linux 环境:
sed -i -e '/^begin$/,/^end$/{/^begin$/{r file2.txt' -e '};d}' file1.txt
  • macOS 环境:
sed -i '' -e '/^begin$/,/^end$/{/^begin$/{r file2.txt' -e '};d}' file1.txt
效果验证

假设你的file1.txt初始内容是:

some text ... ...
begin
if something is true
some text here ...
fi
end
some text

file2.txt内容是:

while read line:
do some code
done

执行命令后,file1.txt会变成:

some text ... ...
while read line:
do some code
done
some text

完全符合你的需求哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:16:37