Como fazer o 'grep' funcionar como no Ubuntu?

24

Tentei usar greppara corresponder a um padrão no terminal, mas nenhum resultado saiu.

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

Eu sabia que grepno macOS é baseado no BSD, enquanto grepno Ubuntu é baseado no GNU.

Como fazer o 'grep' funcionar no macOS como no Ubuntu?

SparkAndShine
fonte

Respostas:

33

Quando a -Ropção é usada, o MacOS grepexige que você forneça explicitamente um diretório para pesquisar; por exemplo, especifique .para pesquisar recursivamente o diretório atual:

grep -R 'networks' .
sideshowbarker
fonte
9

A longo prazo, provavelmente é melhor instalar as ferramentas baseadas no GNU ou executar o Ubuntu virtualmente. Ambos estão disponíveis gratuitamente.

brew install coreutils(para executar o brewcomando, você precisa instalar o homebrew em https://brew.sh ) colocará as versões GNU das ferramentas em seu caminho. Procure o ggrepcomando e, possivelmente, um greppacote independente para instalar, pois o coreutils tende a mudar com o tempo o que inclui.

(EDIT: observe que, a partir de 2018 , grepprecisa especificamente ser instalado separadamente, dacoreutils seguinte maneira:

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

e possui um nome executável exclusivo ggrepcom dois Gs.)

Também procurar aqui por GNU ou coreutils será útil para contexto e dicas / truques.

bmike
fonte
2
Observe que pelo menos agora grepnão está incluído no coreutilspacote, brewmas em seu próprio pacote chamadogrep
fejese 17/17/17
2
Observe também que o executável é chamado ggrep(g inicial) agora.
dotancohen 5/09/18
11
Obrigado @dotancohen - fique à vontade para editar uma resposta se tiver certeza da situação. Há um histórico de revisões e sempre podemos conversar se uma alteração não for clara para uma pessoa ou se precisar de mais revisões / ajustes. +1 pelo comentário - obrigado mais uma vez
bmike