我在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)$-th位,而我希望这两行。您能帮我了解一下这种行为吗?
答案 0 :(得分:1)
请勿使用-r
或--include
或任何其他grep选项来查找文件。当有一个名为find
的非常好的工具用于查找时,GNU家伙确实通过在grep中添加这些选项而搞砸了,现在他们已经将grep变成了查找文件和全局匹配文件中的正则表达式并打印结果(G/RE/P
。
保持简单-使用find
,然后使用grep
, g / re / p 查找文件,:
find . -name '*.tex' -exec grep --color -n '\$-th bit of' {} +
正如其他人指出的那样,您的g/re/p
问题是-w
参数,因此我已在上面删除了它。
答案 1 :(得分:0)
我有相同版本的grep。
这是由您使用check
选项引起的:
-w
字符串 -w, --word-regexp
The expression is searched for as a word (as if surrounded by `[[:<:]]' and `[[:>:]]'; see re_format(7)).
的匹配部分在左侧由单词字符(即$k$-th bit of
)界定,因此,该匹配项被视为在“单词”中,并且可以因此,它满足“整体搜索”的要求。
尝试不使用k
,它将正常工作。