使用适当的sed命令将文本替换为Web地址变量

时间:2017-12-14 20:44:36

标签: bash sed

我正在尝试使用网址更新多个配置文件

配置文件是一个通用文件,它们都包含一行,例如

"github" => "github_change",

我的sed命令是

sudo sed -i 's/github_change/"$github"/g' config.php

但这只会产生

"github" => ""$github"",

正确的输出应该是

"github" => "https://github.com",

我已经尝试了一段时间不同的报价组合到最后

1 个答案:

答案 0 :(得分:0)

单引号可防止变量扩展。你可能正在寻找更像

的东西
sed -i "s/github_change/$github/g" config.php

由于你的地址有正斜杠,你需要逃避:

sed -i "s/github_change/${github//\//\\/}/g" config.php

关于奇怪的构造:通常${varname//a/b}扩展为varname的内容,但用a替换所有出现的b。在这种情况下,a确实是/,但必须将其转义为文字正斜杠,而不是ab之间的分隔符,因此{{ 1}}。最后一部分是\/,它是一个字面反斜杠(转义),后跟正斜杠。