【问题标题】:Bash script which adds a line before every curly brackets in PHP codeBash 脚本,在 PHP 代码中的每个大括号前添加一行
【发布时间】:2012-10-15 04:32:39
【问题描述】:

我需要创建一个 bash 脚本,在每个大括号之前为函数、类(类和方法)和 try/catch 块添加一行

我认为将该程序与 sed E.G. 结合使用:

*find . -type f \( -name "*.php \) -exec sed .......*

例如:

<?php
function my_function() {

}
?>

变成:

<?php
function my_function() 
{

}
?>

【问题讨论】:

  • 引号内的大括号怎么样?如果他们前面也有换行符,可以吗?你关心缩进吗?
  • beta.phpformatter.com 有帮助吗?

标签: php bash sed find


【解决方案1】:

这是使用GNU findGNU sed 的一种方法。它适用于函数和类。您可以相应地调整以修复您选择的其他块。此解决方案还保留了前导空格,您可能会发现这很有帮助。

find . -type f -name "*.php" -exec sed -r -i 's/( *)(function.*|classes.*)\{/\1\2\n\1\{/' {} \;

【讨论】:

  • 对于 try/catch 块呢?
  • 简单。只需将(function.*|classes.*) 更改为(function.*|classes.*|try.*|catch.*)
  • 我会给这个+1,因为它回答了这个问题......虽然我不完全确定这个问题应该得到回答......
【解决方案2】:
find . -type f -name '*.php' -exec sed -E $'s/ *{$/\\\n{/' -i {} \;

将行尾的*{ 替换为换行符和{

如果您只使用某些花括号(函数、类、try/catch)而不使用其他大括号(if、while 等),那么 shell 脚本可能证明是不够的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 2017-11-28
    相关资源
    最近更新 更多