sed -i \'s/search_string/replace_string/\' filename
但是,我一直被以下错误绊倒:
sed: 1: \"i2.html\": command i expects \\ followed by text
我花了很多时间试图确保我在字符串中转义了正确的字符,但是错误仍然存在!
进一步搜索后,问题出在Mac系统与Linux的sed中。与每个问题一样,StackOverflow也有一个答案。高性能标记说明:
您的Mac确实确实运行了BASH shell,但这更多地是您要处理sed的哪种实现的问题。在Mac上,sed来自BSD,与典型的Linux机器上的sed略有不同。我建议你
man sed。
事实证明,使用-i交换机时需要提供备份扩展。chipiik提供有效的答案!
这适用于sed的GNU和BSD版本:
sed -i\'\' -e \'s/old_link/new_link/g\' *或带备份:
sed -i\'.bak\' -e \'s/old_link/new_link/g\' *注意
-i选项后缺少空间!(GNU sed必需)