【问题标题】:Bash script for extracting function calls from c files用于从 c 文件中提取函数调用的 Bash 脚本
【发布时间】:2013-07-01 06:43:01
【问题描述】:

我是脚本新手,我正在尝试从一个 c 文件中提取所有函数调用,它们都存在于一个目录中。 到目前为止,这是我的代码,但似乎没有输出。

#!/bin/bash
awk '/[ \t]*[a-zA-Z_]*\(([a-zA-Z_]*[ \t]*,?)*\);/ {print $0}' *.c 

我被难住了。 c文件也都至少有一个函数调用。

【问题讨论】:

  • 因为人们不会简单地使用正则表达式解析 C。
  • 我认为 gcc 有选项可以告诉你哪些是对外部函数的所有函数调用。也许这才是你真正需要的?
  • 我知道我可以使用 lex/yacc,但我正在尝试使用 awk 编写 shell 脚本。使用正则表达式有什么问题吗?
  • 函数调用被注释掉了怎么办,defines 被遗漏了?处理原型怎么样?和看起来像函数调用的宏?
  • 您的正则表达式不允许数字、字符串文字、嵌套函数调用、表达式内的函数调用、,) 之后的空格、函数调用内的换行符或任何各种其他非常常见的事情。尽管我承认,您甚至没有通过所有这些障碍的 one 函数调用,这有点令人惊讶。 . .

标签: c bash awk function-calls


【解决方案1】:

你应该调试你的正则表达式。减少它直到你得到一些匹配,然后再次添加其他部分,检查你是否得到了预期的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 2021-05-12
    相关资源
    最近更新 更多