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

如何使用Awk合并XML中连续重复的<a:t>标签内容?

这个需求完全可以实现,使用Awk即可高效完成,无需提前掌握所有可能出现的其他标签列表。

实现思路

  • 维护一个临时变量存储连续<a:t>标签内的文本内容
  • 逐行扫描文件:
    • 若当前行是<a:t>标签行,提取标签中间的文本追加到临时变量,跳过当前行输出
    • 若当前行不是<a:t>标签行,先判断临时变量是否有内容:如果有则输出拼接完成的完整<a:t>行,清空临时变量,再输出当前非<a:t>行
  • 最后兜底处理文件末尾剩余的未输出拼接内容

可用脚本

awk '
# 匹配a:t标签行
/<a:t>.*<\/a:t>/{
    if(match($0, /<a:t>(.*)<\/a:t>/, arr)){
        content = content arr[1]
    }
    next
}
# 处理非a:t标签行
{
    if(content != ""){
        print "<a:t>" content "</a:t>"
        content = ""
    }
    print
}
# 处理文件末尾的剩余内容
END{
    if(content != ""){
        print "<a:t>" content "</a:t>"
    }
}
' 输入文件.xml > 输出文件.xml

适配说明

如果你的<a:t>标签行严格独占一行且无前置缩进,可以将第一行的匹配规则改为/^<a:t>/提升匹配准确性。用你提供的示例文件测试,该脚本输出结果和你预期的效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:24:03