【问题标题】:grep: search inside user include filesgrep:在用户包含文件中搜索
【发布时间】:2014-02-21 01:17:17
【问题描述】:

我想使用 grep 或 find 在一些 c 文件中搜索字符串/表达式。有什么方法可以搜索该c文件中包含的头文件吗?

例如:

myfile.c

#include <stdio.h>
#include "myfile1.h"
#include "myfile2.h"

void main()
{
   DATA val;  
}

让我想搜索字符串“DATA”。它应该在 myfile.c 和 myfile1.h,myfile2.h...中搜索...

【问题讨论】:

  • 路径可能包含很多头文件。我只希望那些包含在我的测试源文件中

标签: include grep


【解决方案1】:

我认为这样的事情可能会奏效:

grep -nr "DATA" path/to/files
  • n 是包含匹配文件的行号
  • r是在提供的路径上递归搜索

您还可以具体列出每个文件:

grep -nr "DATA" myfile.c myfile1.h myfile2.h

或者,如果您所有的 .h 文件都在同一个目录中:

grep -nr "DATA" *.h

另外,您可以grep获取包含的头文件列表:

grep -o "\".*\.h\"" myfile.c
"myfile1.h"
"myfile2.h"

从那里,您可以使用xargs 获取这些输出并对返回的每个文件名运行原始搜索:

grep -o "\".*\.h\"" myfile.c | xargs grep -n "DATA"

如果您愿意,也可以在搜索中包含原始文件:

grep -o "\".*\.h\"" myfile.c | xargs grep -n "DATA" myfile.c

【讨论】:

  • 路径可能包含很多头文件。我只希望那些包含在我的测试源文件中
【解决方案2】:

写一个shell脚本,像这样

1)首先在myfile.c中搜索DATA这个词

grep -nr "DATA" myfile.c

2) 搜索包含扩展名.h的单词

3) 现在再次将 grep 命令应用于这些头文件

grep -nr "DATA" myfile1.h myfile2.h

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-09
    • 2012-05-07
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2012-09-12
    相关资源
    最近更新 更多