Rechercher une page de manuel
fgrep
Langue: fr
Version: \*(Dt (ubuntu - 01/11/07)
Section: 1 (Commandes utilisateur)
Sommaire
NOM
grep, egrep, fgrep, rgrep - Afficher les lignes correspondant à un motif donné.SYNOPSIS
grep [options] MOTIF [FICHIER...]grep [options] [-e MOTIF | -f FICHIER] [FICHIER...]
DESCRIPTION
grep recherche dans les FICHIERs indiqués les lignes correspondant à un certain MOTIF. Par défaut, grep affiche les lignes qui contiennent une correspondance au motif. L'entrée standard est lue si FICHIER est omis ou si FICHIER vaut « - ».
Trois variantes du programme sont disponibles : egrep, fgrep et rgrep ; egrep est identique à grep -E, fgrep est identique à grep -F et rgrep est identique à grep -r.
OPTIONS
- -A N, --after-context=N
- Afficher les N lignes qui suivent celle contenant le motif. Une ligne contenant -- est insérée entre les groupes contigus de correspondances.
- -a, --text
- Traiter un fichier binaire comme s'il s'agissait de texte ; c'est l'équivalent de l'option --binary-files=text.
- -B N, --before-context=N
- Afficher les N lignes qui précèdent celle qui contient le motif. Une ligne contenant -- est insérée entre les groupes contigus de correspondances.
- -b, --byte-offset
- Avant chaque ligne, afficher sa position relative (en octets) au sein du fichier.
- --binary-files=TYPE
- Si les premiers octets d'un fichier indiquent qu'il contient des données binaires, considérer que le fichier est de type TYPE. Par défaut, TYPE est binary, et grep affiche un message uniligne disant que le fichier binaire contient le motif ou n'affiche rien s'il n'y a pas concordance. Si TYPE est without-match, grep considère qu'un fichier binaire ne concorde jamais. C'est équivalent à l'option -I. Si TYPE est text, grep traite un fichier binaire comme du texte. C'est équivalent à l'option -a. Attention : grep --binary-files=text peut afficher des données binaires indésirables, qui peuvent avoir des conséquences fâcheuses si la sortie est envoyée vers un terminal et si le pilote de celui-ci l'interprète en tant que commandes.
- -C N, --context=N
- Afficher N lignes de contexte. Une ligne contenant -- est insérée entre les groupes contigus de correspondances.
- -c, --count
- Ne pas afficher les résultats normaux. À la place, afficher un décompte des lignes correspondant au motif pour chaque fichier. Avec l'option -v, --invert-match (voir ci-dessous), afficher le nombre de lignes ne contenant pas le motif.
- --colour[=QUAND], --color[=QUAND]
- Entourer la chaîne correspondante avec les marqueurs trouvés dans la variable d'environnement GREP_COLOR. Les valeurs possibles de QUAND sont never, always ou auto.
- -D ACTION, --devices=ACTION
- Si le fichier est un périphérique, une FIFO ou une socket, utiliser ACTION dessus. Par défaut, ACTION est read (lecture), ce qui signifie que les périphériques sont lus comme des fichiers normaux. Si ACTION est skip, les périphériques sont ignorés en silence.
- -d ACTION, --directories=ACTION
- Si le fichier est un répertoire, utiliser ACTION. Par défaut, ACTION est read, ce qui signifie que les répertoires sont lus comme des fichiers normaux. Si ACTION est skip, les répertoires sont ignorés et aucun message n'est affiché. Si ACTION est recurse, grep lit tous les fichiers présents dans chaque répertoire, récursivement. C'est équivalent à l'option -r.
- -E, --extended-regexp
- Interpréter le MOTIF comme une expression rationnelle étendue (voir ci-dessous).
- -e MOTIF, --regexp=MOTIF
- Utiliser le MOTIF indiqué. Ceci permet de protéger les motifs commençant par « - ».
- -F, --fixed-strings
- Interpréter le MOTIF comme une liste de chaînes de caractères, séparées par des sauts de ligne. Chacune d'entre elles doit être recherchée.
- -f FICHIER, --file=FICHIER
- Lire les motifs dans le FICHIER indiqué, un motif par ligne. Un fichier vide ne contient aucun motif, si bien qu'aucune concordance n'est trouvée.
- -G, --basic-regexp
- Interpréter le MOTIF comme une expression rationnelle simple (voir ci-dessous). C'est le comportement par défaut.
- -H, --with-filename
- Afficher le nom du fichier pour chaque concordance.
- -h, --no-filename
- Ne pas afficher le nom des fichiers dans les résultats lorsque plusieurs fichiers sont parcourus.
- --help
- Afficher un court message d'aide.
- -I
- Traiter un fichier binaire comme s'il ne contenait aucune concordance ; c'est équivalent à l'option --binary-files=without-match.
- -i, --ignore-case
- Ignorer la casse aussi bien dans le MOTIF que dans les fichiers.
- -L, --files-without-match
- Ne pas afficher les résultats normaux. À la place, indiquer le nom des fichiers pour lesquels aucun résultat n'aurait été affiché. La recherche dans chaque fichier cesse dès la première concordance.
- -l, --files-with-matches
- Ne pas afficher les résultats normaux. À la place, indiquer le nom des fichiers pour lesquels des résultats auraient été affichés. La recherche dans chaque fichier cesse dès la première concordance.
- --label=ÉTIQUETTE
- Afficher les données provenant de l'entrée standard comme si elles provenaient du fichier ÉTIQUETTE. C'est particulièrement utile pour des outils comme zgrep, par exemple : gzip -cd foo.gz |grep --label=truc quelquechose
- --line-buffered
- Mettre les lignes dans un tampon. Ceci peut réduire les performances.
- -mN, --max-count=N
- Arrêter de lire un fichier après avoir trouvé N lignes concordantes. Si l'entrée est l'entrée standard prise depuis un fichier normal, et si N lignes qui correspondent sont affichées, grep s'assure avant de s'arrêter que l'entrée standard est positionnée juste après la dernière ligne qui concorde, même s'il y a des lignes de contexte supplémentaires ensuite. Ceci permet au processus d'appel de redémarrer une recherche. Quand grep s'arrête après N lignes de concordance, il affiche toutes les lignes de contexte. Quand l'option -c ou --count est utilisée, grep n'affiche pas plus de N lignes. Quand l'option -v ou --invert-match est aussi utilisée, grep s'arrête après avoir affiché N lignes qui ne contiennent pas le motif.
- --mmap
- Si possible, utiliser la fonction système mmap(2) pour lire les données en entrée plutôt que la fonction système read(2) utilisée par défaut. Dans certaines circonstances, --mmap permet de meilleures performances. Cependant, --mmap peut avoir un comportement aléatoire (y compris la génération d'un core dump) si un fichier voit sa taille réduite pendant que grep le lit, ou si une erreur d'entrée-sortie survient.
- -n, --line-number
- Préfixer chaque ligne de sortie par le numéro de la ligne dans le fichier.
- -o, --only-matching
- N'afficher que la partie d'une ligne qui correspond au MOTIF.
- -P, --perl-regexp
- Interpréter le MOTIF comme étant une expression rationnelle de Perl.
- -q, --quiet, --silent
- Ne pas afficher les résultats normaux. Sortir immédiatement avec un code de retour égal à zéro dès qu'une concordance est trouvée, même si une erreur est détectée. Voyez aussi l'option -s ou --no-messages.
- -R, -r, --recursive
- Lire récursivement tous les fichiers à l'intérieur de chaque répertoire. C'est l'équivalent de l'option -d recurse.
--include=MOTIF- Rechercher récursivement dans les répertoires seulement les fichiers qui correspondent au MOTIF.
--exclude=MOTIF- Rechercher récursivement dans les répertoires les fichiers qui ne correspondent pas au MOTIF.
- -s, --no-messages
- Ne pas afficher les messages d'erreur concernant les fichiers inexistants ou illisibles. Note de portabilité : à la différence de GNU grep, le grep traditionnel n'est pas conforme au standard POSIX.2, car le grep traditionnel n'a pas d'option -q et son option -s agit comme l'option -q du grep de GNU. Les scripts shell destinés à être utilisés avec le grep traditionnel devraient éviter d'utiliser les options -q et -s, et devraient plutôt rediriger la sortie vers /dev/null.
- -U, --binary
- Traiter les fichiers comme s'ils étaient des fichiers binaires. Par défaut, sous MS-DOS et MS-Windows, grep détermine le type de fichier en regardant le contenu des 32 premiers kilo-octets. Si grep décide que le fichier est un fichier de texte, il enlève les retours chariot (CR) du contenu du fichier original (afin que les expressions avec ^ et $ fonctionnent correctement). L'option -U modifie ce comportement, tous les fichiers sont alors lus et traités tels quels. Si le fichier est un fichier de texte avec des paires CR-LF en fin de ligne, certaines expressions rationnelles peuvent échouer. Cette option n'a aucun effet sur des plates-formes autres que MS-DOSet MS-Windows.
- -u, --unix-byte-offsets
- Afficher la position relative en octets dans le style Unix. Avec cette option, grep affiche la position relative en octets comme si le fichier était un fichier de texte de type Unix, c'est-à-dire avec les caractères CR supprimés. Ceci permet d'avoir un résultat identique à celui retourné par grep sur une machine Unix. Cette option n'a d'effet que si elle est utilisée conjointement avec l'option -b, et sur une machine MS-DOS ou MS-Windows.
- -V, --version
- 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 ci-dessous).
- -v, --invert-match
- Inverser la mise en concordance, pour sélectionner les lignes ne correspondant pas au motif.
- -w, --word-regexp
- Ne sélectionner que les lignes contenant des concordances formant des mots complets. La sous-chaîne correspondante doit donc soit se trouver au début de la ligne, soit être précédée d'un caractère ne pouvant entrer dans la constitution d'un mot. De même, elle doit soit se trouver à la fin de la ligne, soit être suivie par un caractère ne pouvant entrer dans la constitution d'un mot. Les caractères composant les mots sont les lettres, les chiffres et le souligné « _ ».
- -x, --line-regexp
- Ne sélectionner que les concordances qui concernent une ligne entière.
- -y
- Synonyme obsolète de -i.
- -Z, --null
- Afficher un octet nul (le caractère ASCII NUL) à la place du caractère qui suit d'ordinaire le nom du fichier. Par exemple, grep -lZ affiche un octet nul après chaque nom de fichier, à la place du saut de ligne. Cette option permet de rendre la sortie non ambiguë, même quand les noms de fichiers contiennent des caractères inhabituels, comme des sauts de ligne. Cette option peut être utilisée avec des commandes telles que find -print0, perl -0, sort -z, et xargs -0 pour traiter des fichiers avec des noms quelconques, même ceux contenant des sauts de ligne.
- -z, --null-data
- Considérer que l'entrée est un ensemble de lignes, chacune terminée par un octet nul (le caractère ASCII NUL) au lieu d'un saut de ligne. Comme l'option -Z ou --null, cette option peut être combinée avec des commandes comme sort -z pour traiter des fichiers ayant un nom quelconque.
EXPRESSIONS RATIONNELLES
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 ; elles utilisent différents opérateurs pour combiner des expressions plus petites.
Grep gère trois styles de syntaxe pour les expressions rationnelles : « simple » (basic), « étendue » (extended) et « perl ». Dans la version GNU de grep, il n'y a pas de différence dans les fonctionnalités disponibles pour les deux premiers styles. Dans d'autres implémentations, les expressions rationnelles simples sont moins efficaces. La description ci-dessous correspond aux expressions étendues, les différences avec les expressions simples étant résumées ensuite. Les expressions rationnelles de Perl ajoutent des fonctionnalités, mais l'implémentation utilisée ici n'est pas documentée et n'est pas compatible avec les autres implémentations de grep.
Les briques élémentaires sont les expressions rationnelles correspondant à un seul caractère. La plupart des caractères, y compris les lettres et les chiffres, constituent des expressions rationnelles et concordent avec eux-mêmes. Tout méta-caractère ayant une signification particulière doit être protégé en le faisant précéder d'une contre-oblique (backslash).
Une liste de caractères, encadrée par [ et ] peut être mise en correspondance avec n'importe quel caractère 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] concorde avec n'importe quel chiffre.
Entre ces crochets, un intervalle de caractères peut être indiqué en donnant le premier et le dernier caractère, séparés par un tiret. il correspond à n'importe quel caractère compris entre le premier et le dernier caractère (ceux-ci inclus), l'ordre des caractères dépendant des paramètres régionaux (locale, en anglais) en cours. Ainsi, avec la valeur par défaut (« C »), [a-d] est équivalent à [abcd]. Avec beaucoup de paramètres régionaux, les caractères sont triés en suivant l'ordre des dictionnaires, et [a-d] n'est alors pas équivalent à [abcd], mais à [aBbCcDd], par exemple. Pour que ces listes aient le comportement habituel de « C », vous pouvez positionner la variable d'environnement LC_ALL à la valeur C.
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:] (ponctuation), [:space:] (espace), [:upper:] (majuscules), et [:xdigit:] (chiffres hexadécimaux). Par exemple, [[:alnum:]] correspond à [0-9A-Za-z], à la différence près que ce dernier dépend des paramètres régionaux C et du codage de caractères 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 leur signification particulière au sein des listes.Pour inclure un caractère ], mettez-le en premier dans la liste. De même, pour inclure un caractère ^, placez-le n'importe où sauf au début de la liste. Enfin, pour inclure un -, placez-le en dernier.
Le point . correspond à n'importe quel caractère. 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.
Dans une expression rationnelle, un caractère peut être suivi par l'un des opérateurs de répétition suivants :
- ?
- L'élément précédent est facultatif et peut être rencontré au plus une fois.
- *
- L'élément précédent peut être rencontré zéro ou plusieurs fois.
- +
- L'élément précédent peut être rencontré une ou plusieurs fois.
- {n}
- L'élément précédent doit correspondre exactement n fois.
- {n,}
- L'élément précédent doit correspondre n fois ou plus.
- {n,m}
- L'élément précédent doit correspondre au moins n fois, mais au plus m fois.
Deux expressions rationnelles peuvent être juxtaposées ; l'expression résultante correspondra à toute chaîne formée par la juxtaposition de deux sous-chaînes correspondant respectivement aux deux expressions.
Deux expressions rationnelles peuvent être reliées par l'opérateur infixe | ; l'expression résultante correspondra à toute chaîne qui comporte l'une ou l'autre des deux expressions.
Les répétitions ont priorité sur les juxtapositions, qui à leur tour ont priorité sur les alternances. Une sous-expression peut être entourée par des parenthèses pour modifier ces règles de priorité.
La référence inverse \n, où n est un chiffre unique, correspond à la sous-chaîne déjà mise en correspondance avec la n-ième sous-expression rationnelle entre parenthèses.
Dans les expressions rationnelles simples, les méta-caractères ?, +, {, |, (, et ) perdent leur signification spéciale, il faut utiliser à la place leur version avec la contre-oblique \?, \+, \{, \|, \(, et \).
La version traditionnelle d'egrep ne connaît pas le méta-caractère {, et certaines implémentations d'egrep utilisent \{ à la place, si bien que des scripts shell portables devraient éviter { dans les motifs d'egrep et utiliser [{] pour désigner un caractère {.
GNU egrep essaie d'émuler l'usage traditionnel en supposant que { n'est pas spécial au cas où il rendrait invalide l'expression qu'il commence. Par exemple, la commande shell egrep '{1' recherche la chaîne composée des deux caractères {1 au lieu de signaler une erreur de syntaxe. POSIX.2 permet ce comportement comme une extension à la norme, mais les scripts portables devraient l'éviter.
VARIABLES D'ENVIRONNEMENT
Le comportement de grep est modifié par les variables d'environnement suivantes :LC_ALL, LC_truc, LANG, dans cet ordre. La variable positionnée en premier détermine le choix des paramètres régionaux. Par exemple, si LC_ALL n'est pas positionnée, mais LC_MESSAGES vaut fr_FR, alors le français est utilisé pour l'affichage des messages. Par défaut « C » est utilisée si aucune variable d'environnement n'est trouvée, si le catalogue des paramètres régionaux n'est pas installé ou bien si grep a été compilé sans le support pour les langues nationales (NLS).
- GREP_OPTIONS
- Cette variable définit des options qui seront ajoutées avant n'importe quelle option explicite de la ligne de commande. Par exemple, si GREP_OPTIONS vaut « --binary-files=without-match --directories=skip », grep se comporte comme si les deux options --binary-files=without-match et --directories=skip avaient été spécifiées avant les options explicites. Différentes options peuvent être séparées par des espaces, et une contre-oblique supprime la signification spéciale du caractère suivant, ce qui permet de spécifier une option contenant une espace ou une contre-oblique.
- GREP_COLOR
- Cette variable spécifie les couleurs pour la mise en relief.
- LC_ALL, LC_COLLATE, LANG
- Ces variables spécifient le choix des paramètres régionaux pour LC_COLLATE, qui détermine l'ordre des caractères utilisé dans des intervalles tels que [a-z].
- LC_ALL, LC_CTYPE, LANG
- Ces variables spécifient le choix des paramètres régionaux pour LC_CTYPE qui détermine le codage de caractères utilisé, par exemple pour indiquer quels caractères sont considérés comme étant des espaces.
- LC_ALL, LC_MESSAGES, LANG
- Ces variables spécifient le choix des paramètres régionaux pour LC_MESSAGES, qui détermine la langue utilisée par grep pour ses messages. Par défaut, avec « C », les messages sont en anglais américain.
- POSIXLY_CORRECT
- Si cette variable est positionnée, grep se comporte comme indiqué dans la norme POSIX.2. Sinon, grep se comporte plus comme les autres programmes GNU. POSIX.2 requiert que les options qui suivent des noms de fichiers soient considérées aussi comme des noms de fichiers. Par défaut, ces options sont déplacées avant la liste des opérandes et sont traitées comme des options. POSIX.2 requiert aussi que les options non reconnues soient considérées comme « illégales » ; mais comme elles n'enfreignent pas vraiment les règles, elles sont rapportées comme étant « invalides » par défaut. POSIXLY_CORRECT désactive aussi l'option _N_GNU_nonoption_argv_flags_, qui est décrite plus bas.
- _N_GNU_nonoption_argv_flags_
- (Ici, N est l'identifiant numérique du processus de grep). Si le i-ième caractère de la valeur de cette variable d'environnement vaut 1, le i-ième opérande de grep n'est pas considéré comme étant une option, même s'il semble l'être. Un shell peut placer cette variable dans l'environnement de chaque commande lancée, pour spécifier quels opérandes sont le résultat du remplacement de méta-caractères et ne doivent donc pas être considérés comme des options. Ce comportement n'est présent qu'avec la bibliothèque C de GNU, et seulement si POSIXLY_CORRECT n'est pas positionnée.
DIAGNOSTICS
Normalement, le code de retour est 0 si des concordances ont été trouvées, et 1 si aucune concordances n'a été faite. Mais le code vaut 2 si une erreur est survenue, à moins que les options -q, --quiet ou --silent ne soient utilisées et qu'une ligne ne soit trouvée.
BOGUES
Envoyez les rapports de bogue ([ndt] en anglais !) à bug-gnu-utils@gnu.org. Assurez-vous d'inclure le mot « grep » dans le sujet du message.
Dans les constructions {n,m} de grandes valeurs de répétition peuvent pousser grep à utiliser beaucoup de mémoire. D'autres expressions rationnelles tordues peuvent prendre un temps très long et mener à une insuffisance de mémoire.
Les références inverses sont très lentes et peuvent demander un temps très important.
TRADUCTION
Cette page de manuel a été traduite par Christophe Blaess en 1997 et mise à jour par Denis Barbier jusqu'en 2005. La version présente dans Debian est dorénavant maintenue par Luc Froidefond <luc DOT froidefond AT free DOT fr> et les membres de la liste <debian-l10n-french AT lists DOT debian DOT org>. Veuillez signaler toute erreur de traduction par un rapport de bogue sur le paquet manpages-fr-extra.-- Rapilly, Robert
Contenus ©2006-2009 Benjamin Poulain
Design ©2006-2009 Maxime Vantorre