Grep 函数的整个主体

Grep 函数的整个主体

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

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

任何帮助或相关手册的链接都将不胜感激。谢谢!

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

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

答案1

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

sed –n '/function someFunction/,/^}/p' someFile.php

显然,如果函数前的 PHPDoc 以某个唯一字符串开头,则应使用该字符串而不是/function someFunction/。否则,就没那么容易了;使用 可能可行awk

相关内容