首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇怪的行为grep -rnw

奇怪的行为grep -rnw
EN

Stack Overflow用户
提问于 2018-07-27 20:19:08
回答 2查看 135关注 0票数 1

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

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

代码语言:javascript
复制
$k$-th bit of
$(i-m)$-th bit of

分别使用。当我跑的时候

代码语言:javascript
复制
grep --color -rnw . -e '\$-th bit of' --include="*.tex" 

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

EN

回答 2

Stack Overflow用户

发布于 2018-07-27 21:40:16

切勿使用-r--include或任何其他grep选项来查找文件。GNU的家伙们真的搞砸了,他们把这些选项添加到grep中,当有一个名为find的完美工具用于查找文件,现在他们已经把grep变成了一个复杂的杂乱无章的查找文件和全局匹配文件内的正则表达式并打印结果(G/RE/P)的工具。

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

代码语言:javascript
复制
find . -name '*.tex' -exec grep --color -n '\$-th bit of' {} +

正如其他人指出的,您的g/re/p问题出在-w arg上,所以我在上面删除了它。

票数 1
EN

Stack Overflow用户

发布于 2018-07-27 20:28:37

我有相同版本的grep。

这是由您使用-w选项引起的:

代码语言:javascript
复制
 -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)为界,因此匹配被视为在“单词”中,因此不能满足“作为一个完整的单词进行搜索”的要求。

在不使用-w的情况下尝试,它会工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51557835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档