
grep
est un puissant outil de ligne de commande qui vous permet de rechercher dans un ou plusieurs fichiers d'entrée des lignes correspondant à une expression régulière et d'écrire chaque ligne correspondante sur la sortie standard.
Dans cet article, nous allons vous montrer comment utiliser GNU grep
pour rechercher plusieurs chaînes ou modèles.
Grep plusieurs modèles #
GNU grep
prend en charge trois syntaxes d'expressions régulières, Basic, Extended et compatible Perl. Lorsqu'aucun type d'expression régulière n'est spécifié, grep
interpréter les modèles de recherche comme des expressions régulières de base.
Pour rechercher plusieurs modèles, utilisez l'opérateur OR (alternance).
L'opérateur d'alternance |
(pipe) vous permet de spécifier différentes correspondances possibles qui peuvent être des chaînes littérales ou des ensembles d'expressions. Cet opérateur a la priorité la plus faible de tous les opérateurs d'expression régulière.
La syntaxe pour rechercher plusieurs modèles à l'aide de grep
les expressions régulières de base sont les suivantes :
grep 'pattern1\|pattern2' file...
Placez toujours l'expression régulière entre guillemets simples pour éviter l'interprétation et l'expansion des méta-caractères par le shell.
Lors de l'utilisation d'expressions régulières de base, les méta-caractères sont interprétés comme des caractères littéraux. Pour conserver les significations particulières des méta-caractères, ils doivent être échappés avec une barre oblique inverse (\
). C'est pourquoi nous échappons à l'opérateur OR (|
) avec une barre oblique.
Pour interpréter le modèle comme une expression régulière étendue, appelez grep
le -E
( ou --extended-regexp
) option. Lorsque vous utilisez une expression régulière étendue, n'échappez pas le |
opérateur :
grep -E 'pattern1|pattern2' file...
Pour plus d'informations sur la construction d'expressions régulières, consultez notre article Grep regex.
Grep plusieurs chaînes #
Les chaînes littérales sont les modèles les plus élémentaires.
Dans l'exemple suivant, nous recherchons toutes les occurrences des mots fatal
, error
, et critical
dans le fichier Nginx logerror :
grep 'fatal\|error\|critical' /var/log/nginx/error.log
Si la chaîne que vous recherchez comprend des espaces, placez-la entre guillemets doubles.
Voici le même exemple utilisant l'expression régulière étendue, qui élimine le besoin d'échapper l'opérateur |
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Par défaut, grep
est sensible à la casse. Cela signifie que les caractères majuscules et minuscules sont traités comme distincts.
Pour ignorer la casse lors de la recherche, appelez grep with
le -i
option (ou --ignore-case
):
grep -i 'fatal\|error\|critical' /var/log/nginx/error.log
Lors de la recherche d'une chaîne, grep
affichera toutes les lignes où la chaîne est incorporée dans des chaînes plus grandes. Donc, si vous cherchiez "error", grep
imprimera également les lignes où « erreur » est intégré dans des mots plus grands, tels que « sans erreur » ou « antiterroristes ».
Pour renvoyer uniquement les lignes où la chaîne spécifiée est un mot entier (entouré de caractères non verbaux), utilisez le -w
( ou --word-regexp
) :
grep -w 'fatal\|error\|critical' /var/log/nginx/error.log
Les caractères de mot incluent les caractères alphanumériques (a-z, A-Z et 0-9) et les traits de soulignement (_). Tous les autres caractères sont considérés comme des caractères non verbaux.
Pour plus de détails sur grep
options, consultez notre article Commande Grep.
Conclusion #
Nous vous avons montré comment grep
pour rechercher plusieurs modèles, chaînes et mots.
Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire.