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

如何使用sed命令拼接XML中<id>与<name>标签的对应值

调整后的sed命令

针对你给出的固定格式XML,可用以下命令实现预期输出:

sed -n '/<id>/{s:.*<id>\(.*\)</id>.*:\1:;h};/<name>/{s:.*<name>\(.*\)</name>.*:\L\1:;G;s/\n/:/p}' your_file.xml

输出结果:

292:Test
195:state
266:Home
命令说明

你原来的命令会在每次匹配到id、name标签时单独打印内容,因此分为两行输出,调整后的命令利用sed的暂存空间(hold space)实现跨行值拼接:

  • 匹配到<id>行时:先提取id的取值,用h命令将id值存入暂存空间
  • 匹配到<name>行时:先提取name的取值,其中\L修饰符会将name转为小写(和你示例输出匹配,如果不需要转小写删掉\L即可);再用G命令将暂存空间里的id值追加到当前name值后方,二者默认用换行分隔;最后将换行替换为冒号后打印即可
补充建议

如果后续要处理格式更复杂、不固定的XML内容,更推荐使用专用的XML解析工具(如xmlstarlet、xmllint)来处理,容错性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:45:07