如何使用sed命令搜索和替换特殊字符串?

How to use sed command for search and replace special string?

我正在编写 bootstrap 脚本以在 VM 上设置服务器。所以,我不能 运行 sed 命令替换文件中的字符串。

在 setup.rb 文件中:

token = ENV['SERVER_URL]

所以我想用我的域名替换 ENV['SERVER_URL'] https://my.domain.com

sed -i -e 's/ENV\[\'SERVER_URL\'\]/https\:\//my.domain.com/g setup.rb

所以它不起作用。请帮我解决它。 谢谢

改为使用外部双引号,以避免必须处理替换参数中的单引号。

sed -i -e "s/ENV\['SERVER_URL'\]/my.domain.com/g" setup.rb

sed -i -e "s#ENV\['SERVER_URL\]#https://my.domain.com#" setup.rb
  • 使用双引号因为搜索模式中有单引号
  • s/// 操作中使用其他分隔符(此处为 #),因为 / 处于替换模式

  • 注意不要使用像 & 这样的元字符(简单的域没有风险,完整的 URL 很好)在替换模式中有特殊意义