[英]Regex for greping C type definition
我有大量的源文件,我想通过它查找特定的用户定义类型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" *
该定义可能有更多变体,例如:
typedef struct {
/* some code */
} dev_if_type_t;
一些代码也可能像这样:
#define \
dev_if_type_t int
struct
dev_if_type_t
{
/* some code */
};
你永远不会知道。
我建议您尝试使用dev_if_type_t
并使用grep
的上下文选项-C <num>
dev_if_type_t
查找定义。
使用包括|
在内的表达式时 不要忘记使用egrep
(不建议使用)或正确的命令grep -E ...
注意\\|
和\\(
具有不同的含义。使用|
和(
用于您的目的。
因此正确的模式应该是:
grep -Ern "typedef.*dev_if_type_t|(define|typedef|enum|struct)\s*dev_if_type_t" *
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.