如何用Linux命令批量在某行代码下添加php代码

有10来个一样的站
/data/www/aa.com/test.php
/data/www/bb.com/test.php
/data/www/cc.com/test.php
想用Linux命令批量修改/data/www/aa.com/test.php 指定文件 某行$M=$this->MODEL('article'); 下添加如下代码

        $M->AddNewsHits(array("id"=>(int)$_GET['id']));
        $news_info=$M->GetNewsBaseOnce(array("id"=>(int)$_GET['id']),array("field"=>"hits"));
        echo "document.write('".$news_info["hits"]."')";

用linux shell命令如何写呢,还是有舍更好的办法

阅读 1.9k
2 个回答

shell脚本暂时没有想到方式,提供一个 php 处理的思路给你。
你把 /data/www/bb.com/test.php 文件的代码,用 fgets($fp) 出来,然后处理成数组 $code[$num] = [...]
然后在你想加入的行中,使用 array_splice($code, $num, 0, $newcode)。处理完后,再处理成字符串,重新写入 /data/www/bb.com/test.php 文件中就可以了。

#!/usr/bin/sh

sites=`ls /data/www`
  
for site in $sites
do
    sed -i '{line} a\ \ \ \ $M->AddNewsHits(array("id"\ =>\ (int)\ $_GET["id"]));\n\ \ \ \ $news_info\ =\ $M->GetNewsBaseOnce(array("id"\ =>\ (int)\ $_GET["id"]),\ array("field"\ =>\ "hits"));\n\ \ \ \ echo\ "document.write(\\\"".$news_info["hits"]."\\\")"' /data/www/$site/test.php
done

上面的脚本会在{line}行之后插入后面跟着的代码,注意{line}整个表示行数,不要留下{},你替换的时候是这样:sed -i '10 ahhh' /path/to/file这表示在第10行之后另起一行插入hhh

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题