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

dkb*_*dkb 2 c regex grep

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

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

typedef.*dev_if_type_t|(define|typedef|enum|struct)\s*dev_if_type_t
Run Code Online (Sandbox Code Playgroud)

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

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

grep -rn "typedef.*dev_if_type_t\|\(define\|typedef\|enum\|struct\)\s*dev_if_type_t" *
Run Code Online (Sandbox Code Playgroud)

m13*_*13r 5

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

typedef struct {
    /* some code */
} dev_if_type_t;
Run Code Online (Sandbox Code Playgroud)

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

#define \
dev_if_type_t int

struct
dev_if_type_t
{
    /* some code */
};
Run Code Online (Sandbox Code Playgroud)

你永远不会知道.
我建议你尝试只是grepping 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" *
Run Code Online (Sandbox Code Playgroud)