使用以前grep的结果grep多个单词

时间:2013-03-08 13:25:33

标签: grep pipe

我有一大堆文件,我想搜索一下。

我想找到被X包围的所有单词 - 只有单词 - 。我用lookbehind和lookahead这样做:

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定义了一个函数指针 - 在本例中为DoThis - 稍后可以使用CALL(DoThis)();来使用。 / LI>
  • 根据要求关闭FP展开为空,CALL(DoThis)展开为DoThis

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

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

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

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

现在我想要一个列表,列出可以获取使用FPCALL创建的任何函数的函数指针的所有位置。 所以,不知何故,我想将两个grep链接在一起,这样第一个grep的每个结果都被送到第二个,最终的结果被组合在一起。

1 个答案:

答案 0 :(得分:0)

也许这个好先生

grep -rho 'XY[a-zA-Z0-9_]*YX' . | sed 's/[XY]//g'