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

如何批量复制XML中g:id行,替换为sku并截断下划线后内容?

方法1:使用sed命令(最快,适合Linux/macOS环境)

1万条数据仅需毫秒级处理,直接一行命令完成:

  • GNU sed(Linux系统默认):
sed -E '/<g:id><!\[CDATA\[([^_]+)_.*/{p;s//<sku><![CDATA[\1]]><\/sku>/}' 原文件.xml > 处理后文件.xml
  • macOS自带sed:
sed -E -i '' '/<g:id><!\[CDATA\[([^_]+)_.*/{p;s//<sku><![CDATA[\1]]><\/sku>/}' 原文件.xml

命令逻辑:匹配到g:id行时,先打印原行,再将行内容替换为要求的sku行输出,([^_]+)会捕获下划线之前的ID内容直接复用。

方法2:使用Python脚本(兼容性最好,可调性强)

如果需要更灵活的规则调整,或者是Windows环境,用以下脚本即可:

import re

# 配置路径
INPUT_PATH = "你的原文件路径.xml"
OUTPUT_PATH = "处理后的文件路径.xml"

id_pattern = re.compile(r'^<g:id><!\[CDATA\[([^_]+)_[^\]]*\]\]></g:id>$')

with open(INPUT_PATH, 'r', encoding='utf-8') as f_in, open(OUTPUT_PATH, 'w', encoding='utf-8') as f_out:
    for line in f_in:
        # 先写入原行
        f_out.write(line)
        # 匹配到g:id行时追加sku行
        match_res = id_pattern.match(line.strip())
        if match_res:
            f_out.write(f'<sku><![CDATA[{match_res.group(1)}]]></sku>\n')

注意事项

处理前务必先备份原文件,可先截取一小段样本测试匹配效果,确认生成的sku行符合要求后再全量处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:36:00