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

发布于 2022-09-07 16:04:54 字数 1050 浏览 45 评论 0

怎么用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来完成这件事,是这种情况下比较好的解决方案了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不乱于心 2022-09-14 16:04:54

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

多情出卖 2022-09-14 16:04:54

hello.php 看作一个 template,就好做多了:

  • 在里面放上 placeholder 来方便替换; 或者
  • 直接以 herredoc 的形式放在shell脚本里,把 placeholder 替换成变量,在使用前控制变量的内容就可以了
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文