Comment faire fonctionner 'grep' comme dans Ubuntu?

24

J'ai essayé d'utiliser greppour faire correspondre un modèle sur le terminal, mais aucun résultat ne sort.

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

Je savais que grepsur macOS est basé sur BSD tandis que grepsur Ubuntu est basé sur GNU.

Comment faire fonctionner 'grep' sur macOS comme dans Ubuntu?

SparkAndShine
la source

Réponses:

33

Lorsque l' -Roption est utilisée, MacOS grepvous oblige à lui donner explicitement un répertoire à rechercher; par exemple, spécifiez .pour rechercher récursivement le répertoire courant:

grep -R 'networks' .
sidehowbarker
la source
9

À long terme, il est probablement préférable d'installer les outils basés sur GNU ou d'exécuter Ubuntu virtuellement. Les deux sont disponibles gratuitement.

brew install coreutils(pour exécuter la brewcommande dont vous avez besoin pour installer homebrew à partir de https://brew.sh ) mettra les versions GNU des outils sur votre chemin. Recherchez la ggrepcommande et éventuellement un greppackage autonome à installer car les coreutils ont tendance à changer au fil du temps ce qu'ils incluent.

(EDIT: Notez qu'à partir de 2018 , grepspécifiquement doit être installé séparémentcoreutils comme suit:

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

et possède un nom exécutable unique ggrepavec deux G.)

La recherche ici de GNU ou de coreutils sera utile pour le contexte et les conseils / astuces.

bmike
la source
2
Notez qu'au moins maintenant grepn'est pas inclus dans le coreutilspackage dans brewmais dans son propre package appelégrep
fejese
2
Notez également que l'exécutable est appelé ggrep(en tête de g) maintenant.
dotancohen
1
Merci @dotancohen - n'hésitez pas à simplement modifier une réponse si vous êtes sûr de la situation. Il y a un historique des révisions et nous pouvons toujours discuter si un changement n'est pas clair pour une personne ou a besoin d'un examen / ajustement supplémentaire. +1 pour le commentaire - merci encore
bmike