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

如何修改awk脚本以替换XML中<connection>标签的属性值?

修改awk脚本实现XML指定属性替换

需求概述

原awk脚本会完全替换<named-connections>标签内的所有内容,现在需要调整为仅替换<connection>标签中的port、server、service、username这几个属性的值,将它们统一改为new_value,其他内容保持不变。

修改后的awk脚本

保存为xmlcode.awk:

# 标记是否处于<named-connections>标签范围内
/<named-connections>/ { inNamed = 1; print; next }
/<\/named-connections>/ { inNamed = 0; print; next }

# 在范围内处理<connection>标签行
inNamed && /<connection/ {
    # 逐个替换目标属性值
    gsub(/port='[^']*'/, "port='new_value'")
    gsub(/server='[^']*'/, "server='new_value'")
    gsub(/service='[^']*'/, "service='new_value'")
    gsub(/username='[^']*'/, "username='new_value'")
    print
    next
}

# 其他行直接输出
{ print }

脚本逻辑说明

  1. 通过<named-connections>和</named-connections>标签标记处理范围,避免修改其他区域的内容。
  2. 在范围内部,定位到包含<connection>的行,用gsub正则匹配目标属性:
    • port='[^']*' 匹配port属性及其原有单引号包裹的任意值
    • 替换为port='new_value',同理处理另外三个属性
  3. 非目标行直接原样输出,保证XML结构和其他内容不受影响。

批处理命令调整

原批处理中不再需要传入%_configPRD%参数(因为不再替换整个标签内容),修改后命令如下:

for /f "usebackq delims=" %%f in (trim0ext.txt) do ( 
    set "file5=%%f"
    awk -f xmlcode.awk "!file5!.txt" > "!file5!.tds" 
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 10:52:43