修复sed “command i expects \ followed by text”和“invalid command code”问题

如果你使用的Mac系统来开发,你可能会碰到这种同样一个问题在Ubuntu或者Centos上执行成功,Mac终端下执行不成功,sed命令就是这样,出现”command i expects \ followed by text“错误,下面我们来看下问题的原因。

command i expects \ followed by text

原因

提示的问题如下:

$ sed -i 's/search_string/replace_string/' st.go
sed: 1: "st.go": command i expects \ followed by text

原因:

在Mac上,sed来自BSD,与典型的Linux机器上的sed略有不同。我建议你man sed

解决方法

适用于sed的GNU和BSD版本:

sed -i'' -e 's/old_link/new_link/g' *
# 备份到bak文件
sed -i'.bak' -e 's/old_link/new_link/g' *

invalid command code

原因

提示问题如下:

sed -i'' 's/search_string\/replace_string\///g' ./pkg/st.go
sed: 1: "./pkg/st.go ...": invalid command code .

解决方法

  1. 目标文件不需要备份
sed -i "" 's/search_string/replace_string/g' grep -rl 'search_string' ./

2.目标文件需要备份

sed -i ".bak" 's/search_string/replace_string/g' grep -rl 'search_string' ./
如何在 Ubuntu 16.04 中安装配置HAProxy
标签:

发表我的评论

电子邮件地址不会被公开。 必填项已用*标注

ajax-loader