我有大量文件,我想在其中进行搜索。
我想找到所有单词 - 并且只有单词 - 被X
. 我用后视和前瞻来做到这一点:
grep -rhoP "(?<=X)[a-zA-Z0-9_]*(?=X)" .
现在我想知道之前的结果中是否有单词 - 带有完整的上下文 - 被Y
. 我可以为一个特定的词做到这一点abc
grep -rP "(?<=Y)abc(?=Y)" .
但是我怎样才能将这两个命令连接在一起呢?
更新
我有大量的 C 文件。我们所有的 api 函数首先在我们的许多 .h 文件之一中声明,并在我们的许多 .c 文件和内联 .h 文件之一中使用。
有些函数可能不能直接访问,而是通过函数指针访问,但事实证明这对开发来说是一个很大的障碍。为此,我们制作了一些宏 (FP
和CALL
),以便能够轻松打开和关闭此要求。
FP(DoThis)
void DoThis(void);
- 在要求ON的情况下,
FP
定义一个函数指针 - 在本例中为 forDoThis
- 稍后可以通过 using 使用CALL(DoThis)();
。 - 随着要求OFF,
FP
被扩展为空,并被CALL(DoThis)
扩展为 justDoThis
。
可以通过以下方式获取以这种方式创建函数指针的所有函数的列表:
grep -rhoP "(?<=FP\()[a-zA-Z0-9_]*(?=\))" .
可以通过以下方式获取使用函数 DoThis 的函数指针的所有位置的列表:
grep -rP "(?<=CALL\()DoThis(?=\))" .
现在我想要一个所有位置的列表,其中使用创建的任何函数的函数指针FP
可以CALL
被获取。因此,不知何故,我想将两个 grep 链接在一起,以便将第一个 grep 的每个结果提供给第二个,并将最终结果组合在一起。