Grep

Grep

grep

grep est un programme en ligne de commande initialement écrit pour Unix utilisant l'algorithme d'Aho-Corasick. Le comportement habituel de grep est de recevoir une expression rationnelle en ligne de commande, de lire les données sur l'entrée standard ou dans une liste de fichiers, et d'écrire les lignes qui contiennent des correspondances avec l'expression rationnelle sur la sortie standard. Cette commande est très répandue sous tous les systèmes Linux/Unix.

grep est un filtre, ce qui lui permet d'être combiné avec d'autres commandes, sous la forme d'un pipeline.

Ses performances et sa facilité d'emploi en font un outil adapté pour rechercher efficacement des chaines dans une arborescence complexe de fichiers. Il est par exemple utilisé pour trouver toutes les occurrences du nom d'une fonction dans le code source d'un programme ou de chaines dans des fichiers de configuration. Malgré la présence de fonctionnalités similaires dans de nombreux programmes, comme emacs ou vi, de nombreux utilisateurs préfèrent utiliser directement grep, même lorsqu'ils sont en train d'utiliser ces programmes.

Sommaire

Origine du nom

Historiquement, le nom provient de l'une des commandes de l'éditeur de texte ed disponible sur UNIX, dont la syntaxe est :

:g/re/p

Cette commande signifie : « rechercher globalement les correspondances avec l'expression rationnelle (en anglais, regular expression), et imprimer (print) les lignes dans lesquelles elle correspond ». Par défaut, grep se comporte très exactement comme cette commande. Toutefois, de nombreuses options en ligne de commande permettent de changer son comportement.

D'après d'autres sources, le nom grep serait en fait l'acronyme de General Regular Expression Processor, ce qui signifie « Processeur d'expressions rationnelles générique ».

Variantes

Il existe de nombreux dérivés de grep. Parmi eux :

  • agrep, pour approximate grep, c'est-à-dire grep approximatif, qui facilite la recherche de chaîne approchées ;
  • fgrep, pour des recherches avec des motifs fixés ;
  • egrep, pour les recherches nécessitant une syntaxe d'expressions rationnelles plus sophistiquée ;
  • rgrep, pour une recherche dans tous les fichiers d'un répertoire
  • zgrep, pour une recherche dans un fichier compressé
  • Tcgrep, qui est une réécriture de grep et qui utilise les expressions rationnelles de Perl.

Toutes ces variantes de grep ont été portées sur de nombreux systèmes d'exploitations.

De nombreuses autres commandes contiennent le mot « grep ». Par exemple, l'utilitaire GNU pgrep affiche le numéro des processus dont le nom correspond avec l'expression rationnelle.

Utilisation dans la langue courante

Bien que construit comme un acronyme, « grep » est un mot prononçable, en français comme en anglais. Les utilisateurs anglophones de grep utilisent souvent son nom comme un verbe, qui signifie « chercher quelque chose dans un fichier », comme on le ferait avec l'utilitaire grep. L'objet direct désigne alors les fichiers dans lesquels il faut chercher : "Kibo grepped his Usenet spool for his name." (qui signifie : « Kibo a recherché son nom dans son spool Usenet »). En français, le mot est plus rarement utilisé comme un verbe du premier groupe : « greppe les logs pour voir si le serveur a reçu ta demande. »

Par extension, le mot « grep » est aussi devenu un synonyme des expressions rationnelles elles-mêmes. De nombreux éditeurs ou traitements de texte proposent aujourd'hui des fonctionnalités de recherche à l'aide d'expressions rationnelles, qu'ils désignent souvent par « outil grep » ou « mode grep », dans lequel des motifs grep peuvent être saisis. Cette imprécision est source de confusion, en particulier dans les environnements non-UNIX.

Exemples

Dans le cas le plus simple, grep est utilisé pour afficher les lignes contenant un certain mot. Pour chercher les lignes contenant le nom Durand dans un fichier de contact téléphonique :

grep Durand ListeNuméros.txt

qui retournera seulement les lignes contenant Durand :

Mathieu Durand, 0723237694
Bernard Durand, 0966324355

Pour chercher la chaine plop dans tous les fichiers du répertoire courant :

grep plop *

Pour chercher la chaine plop dans tous les fichiers du répertoire courant ainsi que dans les sous-répertoires (le caractère . est un chemin relatif qui désigne le répertoire courant) :

grep -r plop .

Idem recherche précédente, mais en ne retournant que les noms des fichiers qui contiennent plop :

grep -lr plop .

Pour les cas plus élaborés, grep permet de faire des recherches à l'aide d'expressions rationnelles. Pour rechercher toutes les lignes qui commencent par la lettre A dans les fichiers du répertoire courant :

grep '^ *[Aa]' *

Utilisé derrière un pipe, il permet de filtrer des sorties standards, par exemple pour trouver les processus du démon httpd en retirant la ligne du grep :

ps auxwww | grep httpd | grep -v grep

Utilisé avec la commande find, on obtient un outil de recherche performant, permettant par exemple trouver tous les fichiers correspondants à un masque contenant une chaine de caractères bien précise :

find /usr/src/linux -name "*.[ch]" -exec grep -li "foobar" {} \;

Options courantes

  • -F ("--fixed-string") : effectue une recherche textuelle simple, sans expressions rationnelles ;
  • -v ("--invert-match") : inverse le comportement, grep affiche alors uniquement les lignes qui ne contiennent pas de correspondance avec l'expression rationnelle ;
  • -i ("--ignore-case") : rend la recherche insensible à la casse.
  • -r ("--recursive") : effectue une recherche récursive

Équivalent de grep sous Windows : la commande find

La commande find de Windows réalise les fonctions les plus basiques de grep. Par exemple, la commande find "partition" c:\b* affichera les lignes du fichier boot.ini qui contiennent le mot partition.

la commande find met %errorlevel% à 0 si la chaine est trouvée, à 1 autrement ; le code suivant recherche la chaine "texte" dans le fichier document.txt :

find /I "texte" document.txt
if "%errorlevel%" == "1" goto non_trouve
echo la chaine a ete trouvee
goto fin
:non_trouve
echo chaine non trouvee
:fin

Pour avoir le même grep sous Windows, il est nécessaire d'installer cygwin. On peut également trouver une version adaptée sur le site de Tim Charron (voir les liens externes plus bas).

Équivalent de grep sous IOS: la commande include

La commande include de Cisco IOS réalise les fonctions les plus basiques de grep. Par exemple, la commande show running-config | include 192.168.1.1 affichera les lignes de la configuration active qui contiennent l'adresse 192.168.1.1.

Voir aussi

Articles connexes

Liens externes

  • Portail de l’informatique Portail de l’informatique
Ce document provient de « Grep ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Grep de Wikipédia en français (auteurs)

Игры ⚽ Поможем решить контрольную работу

Regardez d'autres dictionnaires:

  • grep — est un programme en ligne de commande de recherche de chaînes de caractères, initialement écrit pour UNIX par Ken Thompson, puis amélioré par l utilisation de l algorithme d Aho Corasick. Il existe de nombreuses implémentations grep sur… …   Wikipédia en Français

  • Grep — is a command line text search utility originally written for Unix. The program s name derives from the Unix ed command, g/re/p which performs a similar operation.cite web|url=http://www.catb.org/ esr/jargon/html/G/grep.html |title=grep… …   Wikipedia

  • Grep — Saltar a navegación, búsqueda grep es una utilidad de la línea de comandos escrita originalmente para ser usada con el sistema operativo Unix. Usualmente, grep toma una expresión regular de la línea de comandos, lee la entrada estándar o una… …   Wikipedia Español

  • grep — es una utilidad de la línea de comandos escrita originalmente para ser usada con el sistema operativo Unix. Usualmente, grep toma una expresión regular de la línea de comandos, lee la entrada estándar o una lista de archivos, e imprime las líneas …   Wikipedia Español

  • Grep — grep  утилита командной строки, которая находит на вводе строки, отвечающие заданному регулярному выражению, и по умолчанию выводит их. Название представляет собой акроним английской фразы «search globally for lines matching the regular… …   Википедия

  • GREP — [gɹɛp] ist ein wichtiges Programm, das unter den Betriebssystemen Unix und Unix Derivaten der Suche und Filterung definierter Zeichenketten in Dateien dient. Es wurde ursprünglich von Ken Thompson entwickelt.[1] Der Begriff steht für… …   Deutsch Wikipedia

  • Grep — [gɹɛp] ist ein wichtiges Programm, das unter den Betriebssystemen Unix und Unix Derivaten der Suche und Filterung definierter Zeichenketten in Dateien dient. Es wurde ursprünglich von Ken Thompson entwickelt.[1] Der Begriff steht für… …   Deutsch Wikipedia

  • grep — [gɹɛp] ist ein Programm, das unter den Betriebssystemen Unix und Unix Derivaten der Suche und Filterung definierter Zeichenketten aus Dateien dient. Es wurde ursprünglich von Ken Thompson entwickelt.[1] Der Begriff grep steht für global/regular… …   Deutsch Wikipedia

  • grep —   [Abk. für Global Regular Expression, dt. »allgemeiner regulärer Ausdruck«], ein Systemprogramm in Unix, mit dem nach bestimmten Zeichenmustern in Dateien gesucht werden kann. Solche Zeichenmuster können einfache Zeichenketten sein, komplexe… …   Universal-Lexikon

  • grep — GREP, grepuri, s.n. Grepfrut. – Prescurtare din grepfrut. Trimis de gall, 13.09.2007. Sursa: DEX 98  GREP s. v. grepfrut. Trimis de siveco, 13.09.2007. Sursa: Sinonime  grep s. n., pl. grépuri Trimis de siveco, 10.08.2004. Sursa: Dicţionar …   Dicționar Român

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”