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

寻求Zsh脚本批量将XML特殊字符转为HTML十进制实体

macOS Zsh 批量替换XML特殊字符脚本

直接用下面的Zsh脚本批量处理不同文件夹下的同名XML文件,把指定特殊字符替换为对应HTML十进制实体,解决xlsxwriter导入报错的问题:

#!/usr/bin/env zsh

# 替换成你要处理的XML文件名(所有文件夹下的这个文件都会被处理)
XML_FILENAME="your_file.xml"

# 定义特殊字符到HTML十进制实体的映射,按需添加或修改
REPLACE_RULES=(
  # 非断空格(<0xa0>)→ &#160;
  's/\xc2\xa0/&#160;/g'
  # ï → &#239;
  's/\xc3\xaf/&#239;/g'
  # è → &#232;
  's/\xc3\xa8/&#232;/g'
  # em dash(—)→ &#8212;
  's/\xe2\x80\x94/&#8212;/g'
)

# 递归查找所有子目录中的目标XML文件并处理
find . -name "$XML_FILENAME" -type f | while read -r file; do
  # 先备份原文件(后缀加.bak),防止替换出错
  cp "$file" "$file.bak"
  
  # 应用所有替换规则
  sed -i '' "${REPLACE_RULES[@]}" "$file"
  
  echo "已处理文件:$file"
done

echo "批量替换完成,原文件已备份为.bak后缀"

使用说明:

  1. 将上述代码保存为replace_special_chars.zsh
  2. 打开终端,给脚本加执行权限:chmod +x replace_special_chars.zsh
  3. 修改脚本里的XML_FILENAME为你实际要处理的XML文件名
  4. 如果有更多特殊字符需要替换,直接在REPLACE_RULES数组里按格式添加新的替换规则(macOS下可以用hexdump -C命令查看字符的十六进制编码)
  5. 进入存放XML文件的根目录,运行脚本:./replace_special_chars.zsh

注意事项:

  • 脚本会自动备份原文件(每个处理后的文件会生成同名的.bak备份),如果替换出错可以直接恢复
  • macOS自带的sed需要加-i ''参数实现原地替换,不要省略空字符串参数,否则会生成异常后缀的文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:07:18