我diff使用该-p选项运行,因此输出将包含每次更改发生的函数的名称.有类似的选择grep吗?如果没有,我可以使用其他命令吗?
相反的-B,显示的上下文行立即先于比赛的固定电话号码,我想为比赛进行到仅由一个符合最新的函数签名的前面,但是许多行看来,那是在文件中.如果我正在寻找的选项是-p,输出可能看起来像这样,例如:
$ cat foo.c
int func1(int x, int y)
{
return x + y;
}
int func2(int x, int y, int z)
{
int tmp = x + y;
tmp *= z;
return tmp;
}
$ grep -p -n -e 'return' foo.c
1-int func1(int x, int y)
3: return x + y;
--
5-int func2(int x, int y, int z)
9: return tmp;
假设您正在搜索 foobar:
grep -e "^\w.*[(]" -e foobar *.h *.cpp | grep -B 1 foobar
Run Code Online (Sandbox Code Playgroud)
grep 查找所有函数和所有 foobar,然后 grep 查找 foobar 和前面的行 - 这将只是 foobar 和包含的函数。
在 windows 版本的 cygwin 上测试
干得好:
git grep --no-index -n -p 'return'
Run Code Online (Sandbox Code Playgroud)
您只需要git。被搜索的文件不需要是git repo的一部分。但是,如果是这样,请省略--no-index并获得即时速度提升!
很不幸的是,不行。此功能不存在于grep也不存在于ack(这是改进的grep替代品)。
不过,我真的希望这个存在。它会派上用场的。不久前确实有人尝试过实现它,但看起来他们的补丁从未被接受(或者甚至没有发布在网上,奇怪的是)。您可以尝试给他发电子邮件,看看他是否仍然拥有代码,并且仍然希望获得将 C 函数显示到grep.
您可以编写一个正则表达式来匹配 C 函数,但我敢打赌这将是正则表达式的一个怪物。
| 归档时间: |
|
| 查看次数: |
6705 次 |
| 最近记录: |