Grep - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

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

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' ou '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      

Le pipe permet également de séparer des alternatives à une recherche (mais il faut le faire précéder d'une contre oblique pour ne pas chercher le caractère 'barre verticale' lui-même). Ainsi pour chercher les lignes contenant 'Dupont', 'Dupond' ou 'Durand', on entre :

      grep 'Dupont\|Dupond\|Durand' *      

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" {} \;      

Équivalents

É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 été 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.

Ack, grep pour programmeurs

  • ack, écrit en Perl est un logiciel définit comme "ack, mieux que grep, un outil de recherche puissant pour programmeurs":
  • Il ignore les fichiers inutiles, tels les fichiers des Logiciels de gestion de versions ou les fichiers de sauvegarde des éditeurs de texte.
  • l'utilisation en ligne de commande est plus courte comparées à celle de grep
  • On peut utiliser les expressions régulières de Perl, moins limitées que celles de grep
Page générée en 0.101 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise