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

怎么用sed,awk等命令在指定代码块中插入一行代码。
假设有一个文件hello.php,内容如下:
functionhello()
{
}
functionrun()
{
hello();
}
run();
该如何用sed或者awk等命令,在hello函数体内插入echo'hello,world';这段代码,使hello.php修改成如下:
functionhello()
{
echo'hello,world';
}
functionrun()
{
hello();
}
run();
sed好像只能作用于一行,如果hello函数的{跟函数名在同一行,倒是可以考虑把functionhello(){替换成,functionhello(){echo'hello,world';来实现这个效果的。
该问题已经解决。解决方案是使用php读取整个文件进行字符替换,然后重新写入文件的方式来完成的。应用场景比较特殊,不能直接在源文件中加入“placeholder”的方案来完成。
实际应用场景:Dockerfile从github下载piplin的包,修改app/Providers/AppServiceProvider.php文件,在方法functionboot()的代码块中加入\URL::forceScheme('https');以启用https。容器本身搭建的是php网络服务器,已经安装了php组件,因此使用php来完成这件事,是这种情况下比较好的解决方案了。
小怪兽爱吃肉
浏览 707回答 2
2回答

慕标5832272

把hello.php看作一个template,就好做多了:在里面放上placeholder来方便替换;或者直接以herredoc的形式放在shell脚本里,把placeholder替换成变量,在使用前控制变量的内容就可以了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript