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

如何用sed命令将File2中的指定文本替换为File1的内容?

问题分析与解决方案

你的原命令无效的核心原因是:你用/Hamburger/作为匹配条件,但File2.txt里根本没有包含'Hamburger'的行,sed完全不会触发后续的读取和删除操作,自然没有任何变化。

下面是几种可行的实现方法:

方法一:结合Shell变量与sed替换(最直观)

先把File1.txt的内容读取到Shell变量中,再用sed替换File2里的目标字符串:

# 读取File1内容到变量
burger=$(cat File1.txt)
# 直接修改File2,将Pizza替换为变量内容
sed -i "s/Pizza/$burger/" File2.txt

注:如果File1.txt的内容包含sed特殊字符(如/、&、\),需要先对变量内容进行转义,避免sed解析出错。

方法二:纯Sed命令实现(无需Shell变量)

通过匹配包含Pizza的行,先移除Pizza,再读取File1的内容插入到对应位置:

sed -e '/Pizza/{s/Pizza//; r File1.txt' -e '}' File2.txt > temp.txt && mv temp.txt File2.txt

解释:

  • /Pizza/:匹配包含目标字符串的行
  • s/Pizza//:删除该行里的Pizza
  • r File1.txt:读取File1的内容插入到当前行后面
  • 最后通过临时文件覆盖原File2(兼容不同系统的sed版本,避免-i参数的差异)

方法三:简洁的命令替换写法

直接在sed的替换表达式中嵌入读取File1内容的命令:

sed -i "s/Pizza/$(cat File1.txt)/" File2.txt

这个写法和方法一本质相同,只是省去了中间变量,更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:55:22