GREP

Section: Manuel de l'utilisateur Linux (1)
Updated: 15 janvier 1997
Index Retour au Menu Principal

 

NOM

grep, egrep, fgrep - Afficher les lignes correspondant à un motif donné.  

SYNOPSIS

grep [ -[[AB] ]num ] [ -[CEFGVBchilnsvwx] ] [ -e ] motif | -ffichier ] [ fichiers... ]  

DESCRIPTION

Grep recherche dans les fichiers d'entrée indiqués les lignes correspondant à un certain motif.

Si aucun fichier n'est fourni, ou si le nom `-' est mentionné, la lecture se fait depuis l'entrée standard.

Par défaut, grep affiche les lignes correspondant au motif.

Il existe trois variantes principales de grep, contrôlées par les options suivantes.

-G
Interprète le motif comme une expression rationnelle simple (voir plus bas). C'est le comportement par défaut.
-E
Interprète le motif comme une expression rationnelle étendue (voir plus bas).
-F
Interprète le motif comme une liste de chaînes figées, séparées par des Sauts de Lignes (NewLine). La correspondance est faite avec n'importe laquelle de ces chaînes.

De plus, il existe deux variantes du programme : egrep et fgrep. Egrep est similaire (sans être identique) à grep -E, et est compatible avec les versions UNIX historiques de egrep. Fgrep est identique à grep -F.

Toutes les variantes de grep acceptent les options suivantes :

-num
Les correspondances seront affichées avec num lignes supplémentaires avant et après. Néanmoins, grep n'affichera jamais une ligne plus d'une fois.
-A num
Afficher num lignes supplémentaires après la ligne correspondante.
-B num
Afficher num lignes supplémentaires avant la ligne correspondante.
-C
est équivalent à -2.
-V
Afficher le numéro de version de grep sur la sortie d'erreur standard. Ce numéro de version devra être inclus dans tous les rapports de bogues (voir plus bas).
-b
Avant chaque ligne, afficher son décalage (en octet) au sein du fichier d'entrée.
-c
Ne pas afficher les résultats normaux. À la place, afficher un compte des lignes correspondantes pour chaque fichier d'entrée. Avec l'option -v (voir plus bas), afficher les nombres de lignes ne correspondant pas au motif.
-e motif
Utiliser le motif indiqué. Ceci permet de protéger les motifs commençant par -.
-f fichier
Lire le motif dans le fichier indiqué.
-h
Ne pas afficher le nom des fichiers dans les résultats lorsque plusieurs fichiers sont parcourus.
-i
Ignorer les différences majuscules/minuscules aussi bien dans le motif que dans les fichiers d'entrée.
-L
Ne pas afficher les résultats normaux. À la place, indiquer le nom des fichiers pour lesquels aucun résultat n'aurait été affiché.
-l
Ne pas afficher les résultats normaux. À la place, indiquer le nom des fichiers pour lesquels des résultats auraient été affiches.
-n
Ajouter à chaque ligne de sortie un préfixe contenant son numéro dans le fichier d'entrée.
-q
Silence. Ne pas afficher les résultats normaux.
-s
Ne pas afficher les messages d'erreurs concernant les fichiers inexistants ou illisibles.
-v
Inverser la mise en correspondance, pour sélectionner les lignes ne correspondant pas au motif.
-w
Ne sélectionner que les lignes contenant une correspondance formant un mot complet. La sous-chaîne correspondante doit donc être soit au début de la ligne, soit précédée d'un caractère n'appartenant pas à un mot. De même elle doit se trouver soit à la fin de la ligne, soit être suivie par un caractère n'appartenant pas à un mot. Les caractères composants les mots sont les lettres, les chiffres et le souligné (`_'). ([NDT] Bien entendu les minuscules accentuées ne sont pas des lettres ! Elles servent donc à séparer les mots...)
-x
Ne sélectionner que les correspondances qui occupent une ligne entière.
 

EXPRESSIONS RATIONNELLES (REGULAR EXPRESSIONS)

Une expression rationnelle est un motif qui permet de décrire un ensemble de chaînes. Les expressions rationnelles sont construites comme des opérations arithmétiques, en utilisant des opérateurs divers pour combiner des expressions plus petites.

Grep comprend deux versions différentes pour la syntaxe des expressions rationnelles : ``simple'' et ``étendue.'' Dans la version GNU de grep, il n'y a pas de différence dans les fonctionnalités disponibles en utilisant l'une ou l'autre des syntaxes. Dans d'autres implémentations, les expressions rationnelles simples sont moins puissantes. La description ci-dessous correspond aux expressions étendues, les différences avec les expressions simples étant résumées ensuite.

Les briques élémentaires sont les expressions rationnelles correspondant à un simple caractère. La plupart des caractères, y compris toutes les lettres et les chiffres, sont des expressions rationnelles se correspondant à eux-mêmes. Tout méta-caractère ayant une signification spéciale doit être protégé en le faisant précéder d'un BackSlash.

Une liste de caractères, encadrée par [ et ] peut être mise en correspondance avec n'importe quel caractère unique appartenant à la liste. Si le premier caractère de la liste est l'accent circonflexe ^ alors la mise en correspondance se fait avec n'importe quel caractère absent de la liste. Par exemple, l'expression rationnelle [0123456789] convient pour n'importe quel chiffre unique.

Un intervalle de caractères ASCII peut être indiqué en donnant le premier et le dernier caractère séparés par un tiret.

Enfin, il existe certaines classes de caractères prédéfinies. Leurs noms sont assez explicites : [:alnum:], [:alpha:], [:cntrl:], [:digit:] (chiffres), [:graph:], [:lower:] (minuscules), [:print:] (affichables), [:punct:], [:space:], [:upper:] (majuscules), et [:xdigit:] (chiffres hexadécimaux). par exemple, [[:alnum:]] correspond à [0-9A-Za-z], à la différence que le dernier dépend de l'encodage ASCII, alors que le premier est plus portable. Remarquez que les crochets dans les noms de classes font partie intégrante du nom symbolique, et qu'ils doivent donc être inclus en plus des crochets encadrant la liste. La plupart des méta-caractères perdent leurs significations spéciales au sein des listes. Pour inclure un ] littéral, mettez-le en premier dans la liste. De même, pour inclure un ^ littéral, placez-le n'importe ou sauf au début de la liste. Enfin, pour inclure un - placez-le en dernier.

Le point . correspond à n'importe quel caractère unique. Le symbole \w est un synonyme de [[:alnum:]] et \W un synonyme de [^[:alnum]].

L'accent circonflexe ^ et le symbole dollar $ sont des méta-caractères correspondant respectivement à une chaîne vide au début et en fin de ligne. Les symboles \< et \> correspondent respectivement à une chaîne vide en début et en fin de mot. Le symbole \b correspond à une chaîne vide à l'extrémité d'un mot, et \B correspond à une chaîne vide ne se trouvant pas à une extrémité de mot.

Une expression rationnelle correspondant à un caractère unique peut être suivie par l'un des opérateurs de répétition suivants :

?
L'élément précédent est facultatif et doit être mis en correspondance une fois au maximum.
*
L'élément précédent doit être mis en correspondance zéro ou plusieurs fois.
+
L'élément précédent doit être mis en correspondance au moins une fois.
{n}
L'élément précédent doit être mis en correspondance exactement n fois.
{n,}
L'élément précédent doit être mis en correspondance n fois ou plus.
{,m}
L'élément précédent est facultatif et doit être mis en correspondance m fois au plus.
{n,m}
L'élément précédent doit être mis en correspondance au moins n fois, mais au plus m fois.

Deux expressions rationnelles peuvent être juxtaposées, l'expression en résultant correspondra à toute chaîne formée par la juxtaposition de deux sous-chaînes correspondant respectivement aux deux sous-expression.

Deux expressions rationnelles peuvent être reliées par l'opérateur infixe | ; l'expression résultante correspondra à toute chaîne correspondant à l'une ou l'autre des deux sous-expressions.

Les répétitions ont priorité sur les juxtapositions, qui à leur tour ont priorité sur les alternatives. Une sous-expression peut être entourée par des parenthèses pour modifier ces règles de priorité.

La référence inverse \n, ou n est un chiffre, correspond à la sous-chaîne déjà mise en correspondance avec la nième sous-expression rationnelle entre parenthèses.

Dans les expressions rationnelles simples, les méta-caractères ?, +, {, |, (, et ) perdent leurs significations spéciales, il faut utiliser à la place leurs versions avec BackSlash \?, \+, \{, \|, \(, et \).

Dans egrep, le méta-caractère { perd sa signification spéciale, il faut utiliser \{ à la place.  

DIAGNOSTICS

Normalement, le code de retour est 0 si des correspondances ont été trouvées, et 1 si aucune correspondance n'a été faite. L'option -v inverse le sens du code de retour. Le code de retour correspond à des erreurs de syntaxe dans le motif, des fichiers d'entrée inaccessibles, ou d'autres erreurs système.  

BOGUES

Envoyez les rapports de bug ([NDT] en anglais !) à bug-gnu-utils@prep.ai.mit.edu. Assurez-vous d'inclure le mot ``grep'' quelque part dans le champ ``Subject:''.

Dans les constructions {m,n} de grandes valeurs de répétition peuvent pousser grep à utiliser beaucoup de mémoire. De plus, certaines autres expressions rationnelles obscures peuvent prendre un temps exponentiellement long, et mener à un manque de mémoire.

Les références inverses sont très lentes et peuvent nécessiter un temps exponentiellement long.

 

TRADUCTION

Christophe Blaess, 1997.



 

Index

NOM
SYNOPSIS
DESCRIPTION
EXPRESSIONS RATIONNELLES (REGULAR EXPRESSIONS)
DIAGNOSTICS
BOGUES
TRADUCTION


Time: 18:55:10 GMT, December 19, 2004