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

使用sed在XML的MEM字段后插入字符串失败,求解决方法

问题分析与解决

你的sed命令失效并将文本加到行尾,核心原因是正则的贪婪匹配:
原命令中的.*MEM="\(.*\)".*里,\(.*\)会贪婪捕获从MEM的闭合引号到该行最后一个引号之间的所有内容,替换时用.*直接覆盖了原行后续内容,导致新文本被移到行尾。

正确的sed命令

基础替换(仅修改MEM字段)

使用[^"]*匹配除引号外的内容,避免贪婪捕获:

sed 's/MEM="\([^"]*\)"/MEM="\1" TEST_TO_INSERT="INSERT"/' file.xml

精准匹配JOB标签行(避免误改其他行)

如果只想修改<JOB>标签的行,可添加行过滤条件:

sed '/<JOB / s/MEM="\([^"]*\)"/MEM="\1" TEST_TO_INSERT="INSERT"/' file.xml

效果验证

执行后,目标行将变为:

<JOB ID="122" ... MEM="C:\Program Files" TEST_TO_INSERT="INSERT" CONF="YES" .....>

注意事项

sed本质是文本工具,若XML结构复杂(比如属性换行、属性顺序多变),建议使用专门的XML处理工具(如xmlstarlet)来保证可靠性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:40:00