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

如何用sed无临时文件原地替换XML中ns3:myID标签内的值?

sed原地替换XML标签内容的解决方案

要实现sed原地替换<ns3:myID>与</ns3:myID>之间的内容且不生成可见临时文件,关键是正确使用sed的原地替换参数,不同系统的sed语法略有差异:

Linux系统(GNU sed)

直接使用-i参数即可完成原地修改,无需额外备份:

# 精准匹配(避免贪婪匹配误改其他内容)
sed -i "s/<ns3:myID>[^<]*<\/ns3:myID>/<ns3:myID>${MY_NEW_VALUE}<\/ns3:myID>/" path.xml

# 分组写法,逻辑更清晰
sed -i "s/\(<ns3:myID>\)[^<]*\(<\/ns3:myID>\)/\1${MY_NEW_VALUE}\2/" path.xml

macOS/BSD系统

BSD sed要求-i后必须指定备份后缀,若不需要备份,需传入空字符串'':

sed -i '' "s/<ns3:myID>[^<]*<\/ns3:myID>/<ns3:myID>${MY_NEW_VALUE}<\/ns3:myID>/" path.xml

补充说明

  • 用[^<]*代替.*是为了避免正则贪婪匹配,防止同一行内其他带<的标签被误修改
  • 你之前的命令生成临时文件,大概率是因为参数写法错误(多余的-),修正参数后即可实现原地替换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:02:58