regex - Grep:查找调用函数的函数

标签 regex linux command-line grep

假设我有一个包含许多模块的文件夹,并且我正在为一个函数执行 grep。假设我正在搜索的函数称为 test()。是否可以找出调用了哪些函数test()?例如,假设下面是 ModuleA.erl,我们为 test() 做一个 grep。

FunctionA()
   A = 5, 
   B = 3,
   test()

它应该返回:

ModuleA.erl: FunctionA()

可以安全地假设函数定义将始终是非缩进的

最佳答案

您可以为此使用 awk:

$ awk -v patt="test" '$0 ~ /^\w/ {f=$0} $0 ~ patt {print f}' file
FunctionA()

说明

这存储不以空格开头的行。如果一行匹配,则打印最后存储的行。

  • -v patt="test" 提供模式
  • $0 ~/^\w/{f=$0} 如果当前行以某个字符(不是空格)开始,则存储它的值。
  • $0 ~ patt {print f} 如果一行包含给定的模式,则打印存储的标题。

测试

$ cat a
FunctionA()
   A = 5, 
   B = 3,
   test()
FunctionB()
   A = 5, 
   B = 3,
   another()
$ awk -v patt="test" '$0 ~ /^\w/ {f=$0} $0 ~ patt {print f}' a
FunctionA()

关于regex - Grep:查找调用函数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28028819/

相关文章:

ios - 在真实设备上通过命令行实现 UIAutomation

python - 模式的不区分大小写部分

javascript - 正则表达式在字符串的一部分内搜索

linux - 删除文本文件中出现的字符串

linux - 在放弃一个进程后,我怎样才能再次读取正在运行的进程的标准输出

c - 如何编写信号处理程序来捕获 SIGSEGV?

c++ - 适用于 Windows 的 Linux mingw32 sfml 交叉编译 - 缺少 dll 文件

Ruby Regex 从电子邮件地址中提取域

正则表达式捕获组嵌套

python - Python 中 "inspect"和 "interactive"命令行标志的区别