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

macOS Catalina终端如何使用sed查找替换指定HTML字符串

问题根因
  • 报错由sed替换命令分隔符冲突导致:sed的s替换命令默认使用/作为分隔符,你待匹配的字符串里URL包含大量/字符,sed读到http://中的斜杠时会误判替换规则的匹配段提前结束,后续字符串被识别为待处理文件路径,最终触发找不到文件的报错。
  • 此前替换14px为18px的命令可正常运行,是因为待匹配内容不含斜杠,不会触发分隔符冲突。
  • 「正则无法完美解析HTML」的顾虑不适用于当前场景:你不需要处理HTML递归嵌套、属性顺序可变的通用解析需求,仅做固定字面字符串的精确匹配替换,不存在正则解析HTML的典型缺陷。
操作步骤

执行修复后的sed命令

sed的s命令支持自定义分隔符,将默认的/替换为不会出现在匹配内容中的|即可解决冲突:

  • Linux环境(默认搭载GNU sed)执行命令:
find ./html -name "*.html" -exec sed -i 's|<svg xmlns="http://www.w3.org/2000/svg" width="20" viewBox="0 0 256 256">|<svg xmlns="http://www.w3.org/2000/svg" width="30" viewBox="0 0 256 256">|g' {} \;
  • macOS环境(默认搭载BSD sed)下-i参数需要显式指定备份后缀,无需备份则传入空字符串,执行命令:
find ./html -name "*.html" -exec sed -i '' 's|<svg xmlns="http://www.w3.org/2000/svg" width="20" viewBox="0 0 256 256">|<svg xmlns="http://www.w3.org/2000/svg" width="30" viewBox="0 0 256 256">|g' {} \;

替换结果校验

替换完成后执行以下命令,无输出则代表所有目标字符串都已替换完成:

grep -r '<svg xmlns="http://www.w3.org/2000/svg" width="20" viewBox="0 0 256 256">' ./html

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 09:15:43