¿Cómo hacer que 'grep' funcione como en Ubuntu?

24

Traté de usar greppara que coincida con un patrón en la terminal, pero no sale ningún resultado.

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

Sabía que grepen macOS se basa en BSD, mientras que grepen Ubuntu se basa en GNU.

¿Cómo hacer que 'grep' funcione en macOS como en Ubuntu?

Chispa y brillo
fuente

Respuestas:

33

Cuando -Rse usa la opción, MacOS greprequiere que le des explícitamente un directorio para buscar; por ejemplo, especifique .para buscar recursivamente el directorio actual:

grep -R 'networks' .
sidehowbarker
fuente
9

A largo plazo, probablemente sea mejor instalar las herramientas basadas en GNU o ejecutar Ubuntu virtualmente. Ambos están disponibles de forma gratuita.

brew install coreutils(para ejecutar el brewcomando, debe instalar homebrew desde https://brew.sh ) pondrá las versiones GNU de las herramientas en su ruta. Busque el ggrepcomando y posiblemente un greppaquete independiente para instalar, ya que coreutils tiende a cambiar con el tiempo lo que incluye.

(EDITAR: tenga en cuenta que a partir de 2018 , grepespecíficamente debe instalarse por separado de lacoreutils siguiente manera:

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

y tiene un nombre ejecutable único ggrepcon dos G).

También buscar aquí GNU o coreutils será útil para el contexto y consejos / trucos.

bmike
fuente
2
Tenga en cuenta que al menos ahora grepno está incluido en el coreutilspaquete brewsino en su propio paquete llamadogrep
fejese
2
Tenga en cuenta también que el ejecutable se llama ggrep(g inicial) ahora.
dotancohen
1
Gracias @dotancohen, siéntase libre de editar una respuesta si está seguro de la situación. Hay un historial de revisiones y siempre podemos conversar si un cambio no está claro para una persona o si necesita más revisión / ajuste. +1 por el comentario - gracias de nuevo
bmike