使用 sed 插入包含引号 ' 的行

inserting a line containing quote mark ' using sed

我正在尝试编写一个将安装 VirtualBox Headless 的文件脚本。我缺少一个部分来完成它。 phpVirtualBox 要求您编辑 config.php 文件并更改密码。 我要修改的部分是:

/* Username / Password for system user that runs VirtualBox */

var $username = 'vbox';<br>
var $password = 'pass'; **********This Line*****************

我已阅读 (man sed) 并在整个互联网上寻找解决方案,但运气不佳。

我尝试了多个 sed 命令,但 none 将插入 ' 刻度线。

除了 ('),我能得到所有的东西。 这些标记需要围绕密码才能使 config.php 文件正常工作。

我可以删除整行然后尝试插入新行只插入:

var $password = pass ;

谁能帮我弄清楚如何插入整行:

var $password 'pass'; 

我会 post 完整的脚本是任何人都对使用它感兴趣。

保持''不变,替换里面的值即可:

echo "var $password = 'pass';" | sed "s@'pass'@'newpass'@"

结果

var $password = 'newpass';
echo "var $password = 'pass';"|sed "s/\(var $password = '\)[^']\+';/changed_pass\';/g"

它匹配内容var $password= 'sometext';并保持var $password= '</code>,将您的新密码放在<code>旁边,然后添加左侧部分';

就这样使用sed:

上 Mac OS X:

sed -i '' "s/var $password =.*/var $password = 'newpass'/" ~/yourscript.sh

在 Ubuntu:

sed -i "s/var $password =.*/var $password = 'newpass'/" ~/yourscript.sh

您的脚本只是包含您要覆盖的配置的文件,在本例中是包含密码属性的文件

希望此回答对您有所帮助。

谢谢。