仅在函数定义内搜索字符串
search a string only inside a function definetion
有没有办法只在函数定义内搜索字符串。
我的意思是说假设有一个 c 程序文件 a.c,其中存在几个函数的定义,但我只希望在特定函数中存在该字符串时输出搜索(可以说 do_something( )) 定义,有没有办法从命令提示符搜索这样的字符串?
例如,对于以下代码:
#include <stdio.h>
void f(int n,
int j,
int k)
{
printf("name is is pankaj ");
printf("name is is kumar ");
printf("name is is mayank ");
}
int main()
{
printf("name is is pankaj ");
return 0;
}
对于上面的程序,我只想在函数 f() 中出现一次 pankaj,我不希望在 main 函数中出现 pankaj 作为搜索的输出。
请忽略程序中的任何语义或语法错误,我的查询仅用于在程序中搜索字符串。
当然,试试这个:
[=10=] ~ fun {
count = 1
while (! ([=10=] ~ /{/))
getline
getline
}
count > 0 {
if ([=10=] ~ /{/)
count++
if ([=10=] ~ /}/)
count--
if ([=10=] ~ query)
print FILENAME ": l" FNR ". " [=10=]
}
并像这样调用脚本:
awk -v query="pankaj" -v fun="void f[(]" -f script.awk inputfile.java
其中 query
是要搜索的字符串,fun
是函数名称的正则表达式。
此脚本计算 {
和 }
以查看我们何时离开该函数,如果找到匹配项则应打印该行。
编辑:您可能想要扩展正则表达式来计算括号,也许需要额外检查它们是否未放在注释中(尽管您永远不会那样做)。
有没有办法只在函数定义内搜索字符串。
我的意思是说假设有一个 c 程序文件 a.c,其中存在几个函数的定义,但我只希望在特定函数中存在该字符串时输出搜索(可以说 do_something( )) 定义,有没有办法从命令提示符搜索这样的字符串?
例如,对于以下代码:
#include <stdio.h>
void f(int n,
int j,
int k)
{
printf("name is is pankaj ");
printf("name is is kumar ");
printf("name is is mayank ");
}
int main()
{
printf("name is is pankaj ");
return 0;
}
对于上面的程序,我只想在函数 f() 中出现一次 pankaj,我不希望在 main 函数中出现 pankaj 作为搜索的输出。 请忽略程序中的任何语义或语法错误,我的查询仅用于在程序中搜索字符串。
当然,试试这个:
[=10=] ~ fun {
count = 1
while (! ([=10=] ~ /{/))
getline
getline
}
count > 0 {
if ([=10=] ~ /{/)
count++
if ([=10=] ~ /}/)
count--
if ([=10=] ~ query)
print FILENAME ": l" FNR ". " [=10=]
}
并像这样调用脚本:
awk -v query="pankaj" -v fun="void f[(]" -f script.awk inputfile.java
其中 query
是要搜索的字符串,fun
是函数名称的正则表达式。
此脚本计算 {
和 }
以查看我们何时离开该函数,如果找到匹配项则应打印该行。
编辑:您可能想要扩展正则表达式来计算括号,也许需要额外检查它们是否未放在注释中(尽管您永远不会那样做)。