用于greping C类型定义的正则表达式

时间:2014-08-04 11:57:10

标签: c regex grep

我有大量的源文件,我想通过它来查找特定用户定义类型dev_if_type_t的定义。到目前为止我所知道的只是我正在检查的代码中的一些函数将它用作返回值。

现在我正在使用以下内容:

typedef.*dev_if_type_t|(define|typedef|enum|struct)\s*dev_if_type_t

但它没有返回任何结果。是否有另一种C类型定义的方法我忽略了?

grep行本身,在代码库的顶级目录中:

grep -rn "typedef.*dev_if_type_t\|\(define\|typedef\|enum\|struct\)\s*dev_if_type_t" *

1 个答案:

答案 0 :(得分:5)

定义可能有更多变体,如:

typedef struct {
    /* some code */
} dev_if_type_t;

有些代码也可能如下所示:

#define \
dev_if_type_t int

struct
dev_if_type_t
{
    /* some code */
};

你永远不会知道 我建议您只需使用gre dev_if_type_t并使用-C <num>的上下文选项grep来自己查找定义。

使用包含|的表达式时,请勿忘记使用egrep(已弃用)或使用正确的命令grep -E ...

请注意,\|\(具有不同的含义。使用|(即可。

所以正确的模式应该是:

grep -Ern "typedef.*dev_if_type_t|(define|typedef|enum|struct)\s*dev_if_type_t" *