所以我试图找到遵循排除某些文本的模式的函数。我知道如果我正在寻找以下功能
void myfunction(unsigned int a)
{
//Something something here
}
我可以使用以下
找到这个grep -IPzor 'void.*myfunction(\n|.)*\{(\n|.)*\}' ./*
这似乎正常。有两件事我无法弄清楚该怎么做。
1)如果我想忽略其中包含“某事”一词的功能该怎么办?
假设我现在有以下功能:
void myfunction1(unsigned int a)
{
//Something something here
}
void myfunction2(unsigned int a)
{
//Other stuff here
}
我只想找到像function2这样的东西。我试着这样做:
grep -IPzor 'void.*myfunction(\n|.)*\{(\n|.)*(?!Something|something)(\n|.)*\}' ./*
这种不同的变化并不像我预期的那样有效。它只是找不到任何东西,将短语从“某些东西”改为“没有”也无济于事。
2)如果我想找到只有相同数量的'{'和'}'的结果怎么办?
为此,我不知道从哪里开始。结果有时会导致函数后面的额外文本...
以下是我读过的一些链接:
Regex (grep) for multi-line search needed
https://askubuntu.com/questions/551338/how-do-i-grep-for-multiple-patterns-on-multiple-lines