sed: 1: “…”: invalid command code on Mac OS

昨天因为项目中有很多文件的同一个变量需要批量替换成另一个,想用sed做这个。Linux 这样其实就可以了

~# sed -i “s/string_old/string_new/g” grep -rl string_old ./

Mac 会得到抛出这个错误

sed: 1: “…”: invalid command code .

为什么呢,在 Mac 上用 man 查看sed命令~# man sed

-i extensionEdit files in-place, saving backups with the specified extension. If a zero-length extension is given, no backup will be saved. It is not recommended to give a zero-length extension when in-place editing files, as you risk corruption or partial content in situations where disk space is exhausted, etc.

….

翻译:就地替换文件,根据提供的扩展名保存源文件备份。如果不提供扩展名,则不备份。建议替换操作时提供文件备份的扩展名,因为如果恰巧磁盘耗尽的话,你将冒着原文件被损坏的风险。

所以,如果我们不需要备份的话,可以这样

~# sed -i “” “s/string_old/string_new/g” grep -rl string_old ./

或者要备份原文件

~# sed -i “.bak” “s/string_old/string_new/g” grep -rl string_old ./

算是分享一下遇到的坑


原文  http://blog.100dos.com/sed-1-invalid-command-code-mac-os/

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭