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

如何用Shell脚本合并XML标签内多行内容并原地修改文件?

解决XML标签内多行内容合并为单行的Shell脚本方案

需求说明

将XML文件中被拆分成多行的标签内容合并为单行,直接修改原文件。

输入示例:

<lineid>Product 
testing machine 
</lineid>

预期输出:

<lineid>Product testing machine </lineid>

解决方案

使用sed命令实现跨行内容合并,命令如下:

sed -i.bak '/<[^>]*>$/{:a;N;/<\/[^>]*>/!ba;s/\n/ /g;s/  */ /g}' your_file.xml

命令解释

  • -i.bak:直接修改原文件,同时生成带.bak后缀的备份文件(若无需备份,可简化为-i,但建议保留备份以防数据丢失)
  • /<[^>]*>$/:匹配以起始标签结尾的行(如<lineid>所在行)
  • :a:定义循环标记a
  • N:将下一行内容读取到当前处理的模式空间中
  • /<\/[^>]*>/!ba:如果当前模式空间内未找到闭合标签,则跳转到标记a继续读取下一行
  • s/\n/ /g:将所有换行符替换为空格
  • s/ */ /g:将连续多个空格替换为单个空格,避免内容出现冗余空格

注意事项

  • 该脚本适用于无嵌套标签的XML结构,若存在标签嵌套,建议使用专门的XML处理工具(如xmllint)
  • 处理完成后,可通过rm your_file.xml.bak删除备份文件
  • 若标签内包含特殊转义字符(如&、<等),该命令不会破坏其原有格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 01:37:11