Grep

Gelose | Tous les portails | Portail Medecine | Portail Biologie | Portail Biochimie | Portail Microbiologie | Portail Ecologie | Portail Botanique | Biologie cellulaire | Portail Zoologie | Science de la terre | Portail Eau |


 Inscrivez votre site en haut de cette page Soumission direct par Allopass, obtenez 1 lien de qualite en haut de cette page Grep ainsi que sur la page des nouveaux sites inscrits pour seulement 20 euros!


En raison de limitations techniques, la typographie souhaitable du titre, « grep », n'a pu être restituée correctement ci-dessus.

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 régulière 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 régulière sur la sortie standard.

grep est un filtre, ce qui lui permet d'être combiné avec d'autres commandes, sous la forme d'un pipeline (par exemple avec xargs et find pour rechercher une liste de fichiers : find . -name "*.html" | xargs grep plop) ou des scripts shell.

Ses performances et sa facilité d'emploi en font un outil adapté pour rechercher efficacement des chaînes 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 chaînes 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 régulière (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 régulières 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 régulières plus sophistiquée ;
  • Tcgrep, qui est une réécriture de grep et qui utilise les expressions régulières 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 régulière.

[] 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 régulières elles-mêmes. De nombreux éditeurs ou traitements de texte proposent aujourd'hui des fonctionnalités de recherche à l'aide d'expressions régulières, 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 :

Jules Durand, 0723237694
Bernard Durand, 0966324355

Pour chercher la chaîne "blabla" dans le fichier "fich"

grep blabla fich

Pour chercher la chaîne plop dans tous les fichiers du répertoire courant :

grep plop *

Pour chercher la chaîne 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 est permet de faire des recherches à l'aide d'expressions régulières. 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

[] Options courantes

  • -F ("--fixed-string") : effectue une recherche textuelle simple, sans expressions régulières ;
  • -v ("--invert-match") : inverser le comportement, grep affiche uniquement les lignes qui ne contenant pas de correspondance avec l'expression régulière ;
  • -i ("--ignore-case") : rendre la recherche insensible à la casse.

[] Voir aussi

[] Articles connexes

[] Liens externes

Grep