奇怪的行为grep-rnw

奇怪的行为grep-rnw,grep,Grep,我正在MacOS中使用grep(BSD grep)2.5.1-FreeBSD,我发现了以下行为 我有两个*.tex文件。其中每一行都包含以下行 $k$-th bit of $(i-m)$-th bit of 分别。当我跑的时候 grep --color -rnw . -e '\$-th bit of' --include="*.tex" 我只得到了第二个文件,即$(I-m)$-的第位,而我希望得到两行。你能帮我了解一下这种行为吗?我有相同版本的grep 这是由于您使用了-w选项造成的:

我正在MacOS中使用grep(BSD grep)2.5.1-FreeBSD,我发现了以下行为

我有两个*.tex文件。其中每一行都包含以下行

$k$-th bit of
$(i-m)$-th bit of
分别。当我跑的时候

grep --color -rnw . -e '\$-th bit of' --include="*.tex" 

我只得到了第二个文件,即$(I-m)$-的第位,而我希望得到两行。你能帮我了解一下这种行为吗?

我有相同版本的grep

这是由于您使用了
-w
选项造成的:

 -w, --word-regexp
         The expression is searched for as a word (as if surrounded by `[[:<:]]' and `[[:>:]]'; see re_format(7)).
-w,--word regexp

表达式作为单词搜索(好像被`[[:永远不要使用
-r
-include
或任何其他grep选项来查找文件。当有一个名为
find
的非常好的工具用于查找文件时,GNU的家伙真的把这些选项添加到了grep中,现在他们已经把grep变成了一堆复杂的查找文件和全局匹配注册表的工具在文件中使用表达式并打印结果(
G/RE/P

保持简单-使用
find
查找文件,然后g/re/p使用
grep

find . -name '*.tex' -exec grep --color -n '\$-th bit of' {} +

其他人指出你的<代码> G/Re/P问题是<代码> -W/COD> ARG,所以我已经删除了上面的内容。

你应该考虑通过接受或投票来回答你的问题。从你的历史,我看不到它发生过。记住接受或做一个投票是这个网站的一个表达“谢谢”的方式。uld有兴趣对差异进行更深入的讨论。如果认为
find…-exec
为找到的每个文件分叉,而
grep-r
只是其中一个,这是正确的吗?我知道
find
有一些重大的优化,所以可能它权衡了分叉的成本..Josh-我不知道如何
grep-r
会起作用,但我的回答中的find命令会在文件的批处理上调用grep(这是最后的
+
所做的),而不是单个文件(如果希望每次grep 1个文件,请将
+
更改为
\;
)。我不是什么工具何时分叉的专家,但我希望
find-exec grep
grep-r
之间的性能差异可以忽略不计。感谢您的回复,我不知道这一点!这很有意义,而且可能会在广泛的搜索范围内提高性能。也许我会看看
grep
的源代码有一天,当我感到无聊时,我会编写代码。我主要对性能感到好奇,因为在处理遗留系统时,我看到不同的实现会有一分钟的差异。听起来不错,请告诉我他们是否计划实现
sort
curl
grep
中的任何其他工具功能ey显然认为包含
find
s功能是一个好主意,所以谁知道他们还有什么秘密:-)!我想说
grep-r
是软件开发人员最常用的命令之一。虽然find是一个更适合查找文件的工具,但它需要更多的键入才能使用
find.-exec grep