如何用字符串替换内容?贝壳

时间:2017-09-03 08:52:31

标签: php shell sed

我犯了错误。起初,我没有在独立页面中选择数据库日志。现在有374个带有DB登录代码的php页面。这些页面在我的linux服务器上同样直接。

某些包含登录数据库页面代码的页面:

try
{
    $conn=new PDO('mysql:host=localhost;port=3306;dbname=hpc' , 'xxx' , 'xxx');
}
 catch(PDOException $e)
{
    echo "connect failed!".$e->getMesage();
    exit;
}

一些登录DB pagas代码的页面:

$conn = new PDO('mysql:host=localhost;port=3306;dbname=hpc' , 'xxx' , 'xxx');
   $conn->setAttribute(PDO::ATTR_ORACLE_NULLS, true);

现在我只想使用一个DB.php来接管它们(“DB.php”);我试过了:

sed -i "/^try/^}$/,s/.*/include(\"DB.php\")/"g" *

sed -i "/^conn/true)\;$/,s/.*/include(\"DB.php\")/g *
但是他们失败了。我知道使用sed接管字符串:sed -i "s/A/B/g" *。但我不知道如何将内容替换为字符串。谁可以帮助我?

1 个答案:

答案 0 :(得分:0)

如果我没有误解, sed 解决方案可能

// replace try-catch block  
sed -i '/^try/{:t;N;/exit;\n}$/!bt;s/.*/include("DB\.php");/}' *

// replace your second pattern
sed -i '/\$conn/{N;/true/s/.*/include("DB\.php");/}' *