【发布时间】: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