Grep 整个函数体

dot*_*hen 4 vim grep awk sed

假设我知道someFile.php包含someFunction(). 我将如何在标准输出中显示整个函数体?如果我知道主体有 10 行长,那么我会使用cat someFile.php | grep -A 10 "function someFunction"[1] 但实际上该函数可以是任意长度。

我想sed我可以使用 Vimesque 命令,例如/function someFunction<Return>/{<Return>%[2],但我不知道如何格式化它。理想情况下,函数之前的 PHPDoc 将与函数一起输出。

任何帮助或指向适当的精美手册的链接将不胜感激。谢谢!

[1] 我知道这cat是多余的,但我发现这种格式更容易阅读。

[2] 找到函数定义,到左大括号,到右大括号

Sco*_*ott 5

识别出现在函数末尾但不在函数体中的正则表达式。  ^}可能会工作。

sed –n '/function someFunction/,/^}/p' someFile.php
Run Code Online (Sandbox Code Playgroud)

显然,如果函数之前的 PHPDoc 以某个唯一字符串开头,您将使用它而不是/function someFunction/. 否则,就没有那么容易了;可能与awk.