如果字符串的一部分匹配并且写入相同的$ Variable,则替换行

时间:2016-12-27 11:39:24

标签: bash shell awk sed sh

有一个文件调用php_fileinfo.dll,其中包含类似的内容。

config.php

我需要做的是,无论<?php $main="dev.digin.io"; 之后包含的字符串值是否需要替换为$main=等shell变量中的内容。

最终的config.php必须是这样的。 (考虑bash shell变量包含一些像$ MainDomain = prod.mail.com)

$MainDomain

2 个答案:

答案 0 :(得分:0)

@Daz,请你试着跟我来告诉我这是否对你有帮助。

 awk -vVAR="$MainDomain" '/\$mainDomain/{sub(/=.*/,"="VAR,$0);} 1' Input_file

其中-vVAR =&#34; $ MainDomain&#34; VAR是awk的变量,它的shell变量名为MainDomain的值。在awk中,我们不能直接shell变量值,所以我们可以将它分配给awk变量并将其用于它。

如果您对此有任何疑问,请与我们联系。

答案 1 :(得分:0)

这种令人讨厌的sed替代品可以满足您的需求:

$ MainDomain=prod.mail.com
$ sed -E "s/^(\\\$main=\")[^\"]+(\";)$/\1$MainDomain\2/" config.php
<?php
$main="prod.mail.com";

添加-i开关以“就地”编辑文件。使用-i.bak创建备份文件config.php.bak

在这种情况下,最好的办法就是使用配置文件并调整PHP代码以便从中读取,因为像这样修改源代码是一项有风险的业务。

相关问题