| grep | |||
Nomgrep, egrep, fgrep - Afficher les lignes correspondant à un motif donné.Synopsisgrep [ -[[AB] ]num ] [ -[CEFGVBchilnsvwx] ] [ -e ] motif | -ffichier ] [ fichiers... ]DescriptionGrep 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, controlées par les options suivantes.
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 :
Expressions RéguliÈresUne expression régulière est un motif qui permet de décrire un ensemble de chaînes. Les expressions régulières 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 régulières : ``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 régulières 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 régulières correspondant à un simple caractère. La plupart des caractères, y compris toutes les lettres et les chiffres, sont des expressions régulières 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 régulière [0123456789] convient pour n'importe quel chifre 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. Finalement 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 héxadé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-caratè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 régulière correspondant à un caractère unique peut être suivie par l'un des opérateurs de répétition suivants :
Deux expressions régulières 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 régulières 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 précédence. 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 régulière entre parenthèses. Dans les expressions régulières 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. DiagnostiqueNormalement, 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. BoguesEnvoyez 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 régulières 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.
TraductionChristophe Blaess, 1997.
|