如何使“ grep”像在Ubuntu中一样工作?


24

我试图grep在终端上使用一种模式进行匹配,但是没有结果出来。

$ grep -R 'networks'
grep: warning: recursive search of stdin

我知道grep在macOS上基于BSD,而grep在Ubuntu上基于GNU。

如何使'grep'在macOS上像在Ubuntu中一样工作?

Answers:


33

使用该-R选项时,MacOS grep要求您显式为其提供要搜索的目录。例如,指定.以递归方式搜索当前目录:

grep -R 'networks' .

9

从长远来看,最好安装基于GNU的工具或虚拟运行Ubuntu。两者都是免费的。

brew install coreutils(要运行brew命令,您需要从https://brew.sh安装homebrew )会将GNU版本的工具放在您的路径中。寻找该ggrep命令,并可能grep安装一个独立的软件包,因为coreutils的确会随着时间的推移改变其包含的内容。

(编辑:请注意,自2018年起grep特别需要与以下各项分开安装coreutils

$ brew install grep
$ ggrep sometext file.txt     # Note the executable is called ggrep with two G's

并具有ggrep两个G的唯一可执行文件名称。)

另外,在此处搜索GNU或coreutils对于上下文和提示/技巧也将有所帮助。


2
请注意,至少现在grep没有包含在coreutils软件包中,brew而是包含在自己的软件包中grep
fejese

2
还要注意,可执行文件现在称为ggrep(前导g)。
dotancohen

1
感谢@dotancohen-如果您确定情况,可以随时编辑答案。有修订历史记录,如果一个人不清楚更改或需要进一步审核/调整,我们可以随时聊天。+1的评论-再次感谢
bmike
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.