GNU/Linux >> Tutoriels Linux >  >> Linux

Comment Grep pour plusieurs chaînes et modèles

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.


Linux
  1. Comment j'utilise Ansible et anacron pour l'automatisation

  2. Comment comparer des nombres et des chaînes dans le script shell Linux

  3. Linux - Comment Grep Pour Un Mot Spécifique Et Saisir Du Texte?

  4. Comment combiner find et grep pour une recherche complexe ? ( GNU/linux, trouver, grep )

  5. Comment chown répertoire pour plusieurs utilisateurs?

Comment Grep pour plusieurs chaînes, modèles ou mots

Comment installer et configurer plusieurs moteurs d'échecs sur XBoard

Comment utiliser bash if -z et if -n pour tester des chaînes sous Linux

Comment sauvegarder et restaurer une carte SD pour Raspberry Pi

grep pour le terme et exclure un autre terme

grep paires de motifs et fichier