0

我有大量文件,我想在其中进行搜索。

我想找到所有单词 - 并且只有单词 - 被X. 我用后视和前瞻来做到这一点:

grep -rhoP "(?<=X)[a-zA-Z0-9_]*(?=X)" .

现在我想知道之前的结果中是否有单词 - 带有完整的上下文 - 被Y. 我可以为一个特定的词做到这一点abc

grep -rP "(?<=Y)abc(?=Y)" .

但是我怎样才能将这两个命令连接在一起呢?

更新

我有大量的 C 文件。我们所有的 api 函数首先在我们的许多 .h 文件之一中声明,并在我们的许多 .c 文件和内联 .h 文件之一中使用。

有些函数可能不能直接访问,而是通过函数指针访问,但事实证明这对开发来说是一个很大的障碍。为此,我们制作了一些宏 (FPCALL),以便能够轻松打开和关闭此要求。

FP(DoThis)
void DoThis(void);
  • 在要求ON的情况下,FP定义一个函数指针 - 在本例中为 for DoThis- 稍后可以通过 using 使用CALL(DoThis)();
  • 随着要求OFFFP被扩展为空,并被CALL(DoThis)扩展为 just DoThis

可以通过以下方式获取以这种方式创建函数指针的所有函数的列表:

grep -rhoP "(?<=FP\()[a-zA-Z0-9_]*(?=\))" .

可以通过以下方式获取使用函数 DoThis 的函数指针的所有位置的列表:

grep -rP "(?<=CALL\()DoThis(?=\))" .

现在我想要一个所有位置的列表,其中使用创建的任何函数的函数指针FP可以CALL被获取。因此,不知何故,我想将两个 grep 链接在一起,以便将第一个 grep 的每个结果提供给第二个,并将最终结果组合在一起。

4

1 回答 1

0

也许这位好先生

grep -rho 'XY[a-zA-Z0-9_]*YX' . | sed 's/[XY]//g'
于 2013-03-08T19:29:51.103 回答