修复sed “command i expects \ followed by text”和“invalid command code”问题
嘻嘻发布于2022-09-08
最后更新于2022年9月6日
浏览如果你使用的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 .
解决方法
- 目标文件不需要备份
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' ./