gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:51 24 4
gpt4 key购买 nike

假设我有一个包含许多模块的文件夹,并且我正在为一个函数执行 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com