Commande grep

Fonction

Cette commande recherche un modèle dans un fichier.

Syntaxe

grep [ -E | -F ] [ -i ] [ -h ] [ -H ] [ -L ] [ -r | -R ] [ -s ] [ -v ] [ -w ] [ -x ] [ -y ] [ [ [ -b ] [ -n ] ] | [ -c | -l | -q ] ] [ -p [ Séparateur ] ] { [ -e ListeModèles ... ] [ -f FichierModèle ... ] | ListeModèles ... } [ Fichier ... ]

Description

La commande grep recherche le modèle indiqué par le paramètre Modèle et écrit chaque ligne correspondante sur la sortie standard. Les modèles sont des expressions régulières limitées similaires à la commande ed ou egrep. La commande grep utilise un algorithme compact non déterministe.

La commande grep affiche le nom du fichier contenant la ligne mise en correspondance si vous spécifiez plusieurs noms dans le paramètre Fichier. Les caractères à signification particulière dans le shell ($, *, [, |, ^, (, ), \ ) doivent être entourés de guillemets lorsqu'ils sont insérés dans le paramètre Modèle. Si le paramètre Modèle n'est pas une simple chaîne, vous devez en règle générale placer le modèle entier entre guillemets simples. Dans une expression telle que [a-z], - (signe moins) cml spécifie une plage, en fonction de la séquence de classement en cours. Une séquence de classement peut définir des classes d'équivalence à utiliser pour les plages de caractères. Si aucun fichier n'est défini, grep utilise la sortie standard.

Remarques :
  1. N'exécutez pas la commande grep sur un fichier spécial, sous peine d'obtenir des résultats imprévisibles.
  2. Les lignes d'entrée ne doivent pas contenir de caractère NULL.
  3. Les lignes d'entrée doivent se terminer par un caractère d'avance ligne.
  4. Le caractère d'avance ligne n'est pas mis en correspondance par les expressions régulières.
  5. Bien que certaines options puissent être spécifiées simultanément, d'autres options mènent à des substitutions. Par exemple, l'option -l prime sur toute autre option. Si vous spécifiez à la fois -E et -F, l'option en dernière position prime sur la première.

Options

-b Précède chaque ligne du numéro de bloc sur lequel elle a été détectée. Utilisez cette option pour rechercher les numéros de bloc disque par contexte. Vous ne pouvez pas utiliser l'option -b en conjonction avec des données provenant d'une entrée standard ou de canaux.
-c N'affiche qu'un nombre de lignes correspondantes.
-E Traite chaque modèle spécifié comme une expression régulière étendue (ERE). Associer une valeur NULL à l'ERE met chaque ligne en correspondance.
-e ListeModèles Spécifie un ou plusieurs modèles de recherche. Cette opération fonctionne comme un modèle simple, mais est utile lorsque le modèle débute par le signe moins (-). Séparez les modèles par un caractère d'avance ligne. Pour indiquer un modèle NULL, spécifiez deux caractères d'avance ligne adjacents ou un guillemet suivi d'un caractère d'avance ligne ("\n). Chaque modèle est traité comme une expression régulière de base (BRE), sauf si vous spécifiez également l'option -E ou -F. grep gère les occurrences multiples de -e et -f. Tous les modèles indiqués sont utilisés lors de la mise en correspondance de lignes, mais l'ordre d'évaluation n'est pas défini.
-F Traite chaque modèle spécifié comme une chaîne au lieu d'une expression régulière. Une chaîne NULL met chaque ligne en correspondance.
-f FichierModèles Indique un fichier contenant des modèles de recherche. Chaque modèle doit être séparé par un caractère d'avance ligne ; une ligne vide est considérée comme un modèle NULL. Chaque modèle est traité comme une expression régulière de base (BRE), sauf si vous spécifiez également l'option -E ou -F.
-h Empêche l'ajout du nom du fichier contenant la ligne correspondante à cette ligne. Cette option supprime les noms de fichier si plusieurs fichiers sont spécifiés.
-H Si vous spécifiez l'option -r ou -R et qu'un lien symbolique qui référence un fichier de type répertoire est défini sur la ligne de commande, grep recherche les fichiers du répertoire référencé par le lien symbolique et tous les fichiers sous-jacents.
-i Ignore la casse (majuscule ou minuscule) des lettres lors des comparaisons.

-l Ne répertorie (une fois) que les fichiers contenant des lignes correspondantes. Chaque nom de fichier est séparé par un caractère d'avance ligne. Si la recherche porte sur une entrée standard, le chemin (StandardInput) est renvoyé. L'option -l associée à toute combinaison d'options -c et -n ignore ces dernières.
-L Si vous spécifiez l'option -r ou -R et qu'un lien symbolique qui référence un fichier de type répertoire est défini sur la ligne de commande ou rencontré lors de la traversée d'une arborescence de fichiers, grep recherche les fichiers du répertoire référencé par le lien symbolique et tous les fichiers sous-jacents.Si vous spécifiez à la fois -H et -L, la dernière option insérée sur la ligne de commande est exécutée.
-n Précède chaque ligne de son numéro relatif dans le fichier. Chaque fichier commence par la ligne 1 et le compteur de lignes est réinitialisé à chaque fichier traité.
-p[Séparateur] Affiche le paragraphe entier qui contient les lignes correspondantes. Les paragraphes sont délimités par des séparateurs définis par le paramètre Séparateur. Ces derniers sont des modèles dont le format est identique à celui du modèle de recherche. Les lignes qui contiennent les séparateurs de paragraphes ont pour unique objet la séparation. Elles ne sont jamais incluses dans la sortie. Le séparateur de paragraphes par défaut est une ligne vide.
-q Supprime l'écriture de la sortie standard, que des lignes correspondantes soient détectées ou non. L'état de sortie zéro est renvoyé si une ligne d'entrée est sélectionnée. Si vous associez l'option -q à toute combinaison d'options -c, -l et -n, elle ne tient pas compte de ces dernières.
-r Effectue une recherche récursive dans les répertoires. Par défaut, les liens vers les répertoires sont suivis.
-R Effectue une recherche récursive dans les répertoires. Par défaut, les liens vers les répertoires ne sont pas suivis.
-s Supprime les messages d'erreur dus en règle générale à des fichiers non existants ou illisibles. Les autres messages d'erreur ne sont pas supprimés.
-v Affiche toutes les lignes qui ne correspondent pas au modèle indiqué.
-w Effectue une recherche de mot.
-x Affiche les lignes qui correspondent exactement au modèle défini sans caractère supplémentaire.
-y Ne tient pas compte de la casse des lettres lors des comparaisons.
ListeModèles Définit un ou plusieurs modèles à utiliser lors de la recherche. Ces modèles sont traités comme s'ils étaient spécifiés par l'option -e.
Fichier Indique le nom du fichier dans lequel rechercher les modèles. Si aucune variableFichier n'est définie, l'entrée standard est utilisée.

Etat de sortie

Cette commande renvoie les valeurs de sortie suivantes :

0 Une correspondance a été détectée.
1 Aucune correspondance n'a été détectée.
>1 Une erreur de syntaxe a été détectée ou il a été impossible d'accéder à un fichier (même s'il comportait des correspondances).

Exemples

  1. Pour utiliser un modèle contenant quelques métacaractères *, ^, ?, [, ], \(, \), \{ et \}, entrez :

    grep  "^[a-zA-Z]"  pgm.s 

    Cette commande affiche toutes les lignes de pgm.s dont le premier caractère est une lettre.

  2. Pour afficher toutes les lignes qui ne correspondent pas à un modèle, entrez :
    grep   -v  "^#" pgm.s
    Cette commande affiche toutes les lignes de pgm.s dont le premier caractère n'est pas un symbole de livre sterling (#).
  3. Pour afficher toutes les lignes du fichier fichier1 qui correspondent à la chaîne abc ou à la chaîne xyz, entrez :
    grep   -E  "abc|xyz"  fichier1
  4. Pour rechercher un symbole du dollar ($) dans le fichier test2, entrez :

    grep \\$ test2

    Deux barres obliques inversées (\\) ont pour objet d'imposer au shell de passer une barre oblique inversée unique et un symbole du dollar (\$) à la commande grep. Une barre oblique inversée unique (\) demande à la commande grep de traiter le caractère suivant (soit, dans cet exemple, $) comme un caractère littéral plutôt que comme un caractère d'expression. Utilisez la commande fgrep pour éviter d'avoir à utiliser des caractères d'échappement tels que la barre oblique inversée.

  5. Pour effectuer une recherche récursive dans /tmp afin de détecter les fichiers contenant le mot IBM sans inclure les liens qui pointent vers des répertoires, entrez :
    grep –R IBM /tmp
    OU
    grep –r -H IBM /tmp
  6. Pour effectuer une recherche récursive dans /tmp afin de détecter les fichiers contenant le mot IBM et inclure également les liens, entrez :
    grep –r IBM /tmp
    OU
    grep -R -L IBM /tmp

Fichiers

/usr/bin/grep Contient la commande grep.

Envoyer un commentaire | Evaluer la page