shell脚本修改代码文件中的指定代码块

怎么用sedawk等命令在指定代码块中插入一行代码。

假设有一个文件hello.php,内容如下:

<?php
function hello()
{

}
function run()
{
    hello();
}
run();

该如何用sed或者awk等命令,在hello函数体内插入echo 'hello,world';这段代码,使hello.php修改成如下:

<?php
function hello()
{
    echo 'hello,world';
}
function run()
{
    hello();
}
run();

sed好像只能作用于一行,如果hello函数的{跟函数名在同一行,倒是可以考虑把function hello(){替换成,function hello(){echo 'hello,world';来实现这个效果的。


该问题已经解决。解决方案是使用php读取整个文件进行字符替换,然后重新写入文件的方式来完成的。应用场景比较特殊,不能直接在源文件中加入“placeholder”的方案来完成。

实际应用场景:Dockerfile从github下载piplin的包,修改app/Providers/AppServiceProvider.php文件,在方法function boot()的代码块中加入\URL::forceScheme('https');以启用https。容器本身搭建的是php网络服务器,已经安装了php组件,因此使用php来完成这件事,是这种情况下比较好的解决方案了。

阅读 7.3k
1 个回答

这个用sed是比较困难的,如果你能接受用perl、java、python的话,写一个相应的脚本就简单多了,虽然长一点,但更容易维护。

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