我有一大堆文件,我想搜索一下。
我想找到被X
包围的所有单词 - 只有单词 - 。我用lookbehind和lookahead这样做:
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);
FP
定义了一个函数指针 - 在本例中为DoThis
- 稍后可以使用CALL(DoThis)();
来使用。 / LI>
FP
展开为空,CALL(DoThis)
展开为DoThis
。可以通过以下方式获取以这种方式创建函数指针的所有函数的列表:
grep -rhoP "(?<=FP\()[a-zA-Z0-9_]*(?=\))" .
可以通过以下方式获取使用函数DoThis的函数指针的所有位置的列表:
grep -rP "(?<=CALL\()DoThis(?=\))" .
现在我想要一个列表,列出可以获取使用FP
和CALL
创建的任何函数的函数指针的所有位置。
所以,不知何故,我想将两个grep链接在一起,这样第一个grep的每个结果都被送到第二个,最终的结果被组合在一起。
答案 0 :(得分:0)
也许这个好先生
grep -rho 'XY[a-zA-Z0-9_]*YX' . | sed 's/[XY]//g'