使用sed执行查找替换操作时命令不生效问题求助
sed替换失效问题排查与修复
核心问题原因
- 正则特殊字符未转义:sed基础正则中
[、]是表示字符组的保留字符,原命令中未转义的[]会被解析为空字符组,无法匹配到文本中实际的[]字面量。 - 跨系统
-i参数不兼容:macOS自带的BSD sed要求-i必须指定备份后缀,不需要备份需传入空字符串'',否则命令会报错执行失败。
修复后命令
Linux(GNU sed)适用
使用#作为sed替换分隔符,避免转义路径中的斜杠,同时转义匹配规则里的方括号:
sed -i -e 's#purge: \[\],#purge: ["./src/**/*.{js,jsx,ts,tsx}", "./public/index.html"],#g' myfile.txt
macOS(BSD sed)适用
额外给-i参数补充空后缀参数:
sed -i '' -e 's#purge: \[\],#purge: ["./src/**/*.{js,jsx,ts,tsx}", "./public/index.html"],#g' myfile.txt
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

