我可以通过以下命令在git仓库的一个分支中找到包含“my string”模式的所有行
git grep "my string" my_branch
字符串
比如,它的结果是
my_分支:file 1:file 1什么是“my string"?
my_分支:file 2:file 2 Hello,“my string”就是“my string"!
我们在两个文件的两行中看到了3次。我可以通过
git grep "my string" my_branch | wc -l
型
这将导致
2
问题是如何得到字符串在给定分支中所有文件中出现的确切次数?是否可以运行一些命令或脚本,在我的示例中给出3,而不是2?
3条答案
按热度按时间z9gpfhce1#
-o
选项是在2.19中引入的。在以前的版本中,您可以使用git show
并将其与标准grep
调用合并组合:字符串
ws51t4hk2#
您可以在
grep
中使用-o
选项来满足您的需求,并将其传递给wc -l
以进行计数:man grep
内部:字符串
这应该对你有用:
git grep -o "my string" my_branch | wc -l
个请注意,要使用
-o
选项,git版本必须为2.18或更高版本。nwlqm0z13#
为什么
grep
没有给出正确的结果,因为它在每一行中寻找字符串,如果一行中出现了不止一次字符串,那么它也会将其计数为1次。grep
不计算同一行上多次出现的字符串的示例:*假设我们有下面的Input_file:
字符串
现在,当我们运行
grep
命令时,它给出如下:型
现在让我们把一个字符串的多次出现放在一行中:
型
因此,如果允许的话,你可以尝试
awk
,你不需要使用2个程序(grep
+wc
),也为git
命令采取参考@UnbearableLightness的答案在这里。型