【发布时间】:2014-05-14 13:44:04
【问题描述】:
我正在寻找一个 grep、sed 或 awk 命令,它们将在文件中递归搜索函数名,如果函数名匹配,则打印该函数的内容。
int function_name(){
//Body
for(int i = 0; i < 3; ++i){
//this too
}
//with this
}
我希望能够使用终端命令,如果我不知道什么文件 function_name()is in I can search forfunction_name()`,它将打印出来
//Body
for(int i = 0; i < 3; ++i){
//this too
}
//with this
我现在使用的那种作品是grep -r -A 100 "function_name()" *,但在找到函数后总是显示 100 行。问题是有些函数少于 100 并且它显示了我不需要的东西,有些超过 100 行会被截断。
我对正则表达式不太熟悉,但我希望它能打印大括号 { Print This } 之间的所有内容,即使最外面的大括号中有大括号。
【问题讨论】:
-
普通正则表达式不能匹配大括号。一些较新的正则表达式引擎可以,但这些扩展在
grep或awk或sed中不可用。不过,您也许可以通过匹配缩进级别来做到这一点。 -
正确的唯一可靠方法是为您正在解析的语言找到一个解析器。