g/re/pKen Thompson pour rechercher certains motifs dans les fichiers. Doug McIlroy , ignorant son existence, demanda à Thompson d'écrire un tel programme. Thompson répondit qu'il réfléchirait à un tel utilitaire pendant la nuit, mais en réalité, il corrigea des bogues et apporta des améliorations pendant environ une heure à son propre programme, appelé grep s(abréviation de « search »). Le lendemain, il présenta le programme à McIlroy, qui déclara qu'il correspondait exactement à ce qu'il recherchait. Le récit de Thompson pourrait expliquer la croyance selon laquelle grep aurait été écrit en une nuit. Thompson écrivit la première version en langage assembleur PDP-11 pour aider Lee E. McMahon à analyser le texte des Federalist Papers afin de déterminer l'auteur de chaque article. L' éditeur de texte ed (également conçu par Thompson) prenait en charge les expressions régulières , mais ne pouvait être utilisé pour effectuer des recherches dans de très grandes quantités de texte, car il chargeait l'intégralité du fichier en mémoire pour permettre une édition aléatoire . Thompson a donc extrait ce code d'expressions régulières dans un outil autonome capable de traiter des fichiers arbitrairement longs de manière séquentielle, sans charger une trop grande quantité de données en mémoire. Il choisit le nom grep car, dans ed, la commande `grep` , où ` <expression> ` est l' expression régulière à rechercher, affichait toutes les lignes contenant une correspondance de motif spécifiée. grep fut intégré pour la première fois à Unix version 4. Affirmant qu'il est « généralement cité comme l' outil logiciel prototype », McIlroy attribue à grep le mérite d'avoir « irrévocablement ancré » la philosophie des outils de Thompson dans Unix. g/re/pre
Mises en œuvre
De nombreuses implémentations de grep sont disponibles dans divers systèmes d'exploitation et environnements de développement logiciel. Les premières variantes , introduites dans Unix version 7 , incluaient `grep` egrepet `grep-`. La variante `grep-` prend en charge une syntaxe d'expressions régulières étendue, ajoutée par Alfred Aho après l'implémentation originale de Ken Thompson . Cette variante recherche n'importe quelle chaîne de caractères parmi une liste de chaînes fixes à l'aide de l' algorithme de correspondance de chaînes d'Aho-Corasick . Des binaires de ces variantes existent dans les systèmes modernes, généralement liés à grep ou appelés comme script shell avec l'option appropriée, par exemple `--grep` . Les commandes ` grep` et `grep- `, bien que couramment déployées sur les systèmes POSIX (au point que la spécification POSIX mentionne leur présence généralisée), ne font en réalité pas partie de POSIX. fgrepegrepfgrep$@"egrepfgrep
D’autres commandes contiennent le mot « grep » pour indiquer qu’il s’agit d’outils de recherche, généralement ceux qui s’appuient sur des correspondances d’expressions régulières. L’ pgreputilitaire, par exemple, affiche les processus dont les noms correspondent à une expression régulière donnée.
En Perl , `is` grepest une fonction intégrée qui trouve les éléments d'une liste qui satisfont une certaine propriété. Cette fonction d'ordre supérieur est généralement nommée `is` filterou ` whereis` dans d'autres langages.
des expressions régulières Perl . Une fonctionnalité similaire peut être invoquée dans la version GNU de grep avec l' -Poption correspondante.
Des versions de grep (dans Cygwin et GnuWin32 , par exemple) fonctionnent également sous Microsoft Windows . Certaines versions de Windows proposent une qgrepcommande similaire findstr.
Une commande grep fait également partie des outils MSX-DOS2 d' ASCII pour MSX-DOS version 2.
Les commandes grep, egrep, et fgrepont également été portées sur le système d'exploitation IBM i .
Le logiciel Adobe InDesign dispose de fonctions GREP (depuis la version CS3 (2007) ), dans la boîte de dialogue rechercher/modifier onglet « GREP », et introduites avec InDesign CS4 dans les styles de paragraphe « styles GREP ».
agrep
Une commande grep correspond même lorsque le texte ne correspond qu'approximativement au modèle de recherche.
L'invocation suivante trouve netmasksdans le fichier myfile, mais aussi tout autre mot qui peut en être dérivé, étant donné au maximum deux substitutions.
Oxford English Dictionary Online a ajouté « grep » à la fois comme nom et comme verbe.L'expression « You can't grep dead trees » est couramment utilisée pour décrire ce qu'il est plus facile de rechercher dans des supports numériques, à l'aide d'outils tels que grep, que dans un document papier (c'est-à-dire un document fait de « papier », terme qui, dans ce contexte, est un dysphémisme pour désigner le papier).