GNU/Linux >> Tutoriels Linux >  >> Linux

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

Présentation

Grep est un utilitaire puissant disponible par défaut sur les systèmes UNIX. Le nom signifie Global Regular Expression Print.

En utilisant le grep commande, vous pouvez personnaliser la façon dont l'outil recherche un modèle ou plusieurs modèles dans ce cas. Vous pouvez grep plusieurs chaînes dans différents fichiers et répertoires. L'outil imprime toutes les lignes contenant les mots que vous spécifiez comme modèle de recherche.

Dans ce guide, nous allons vous montrer comment utiliser grep pour rechercher plusieurs mots ou modèles de chaîne . Suivez les exemples de ce didacticiel pour apprendre à utiliser grep plus efficacement.

Prérequis

  • Système de type Linux ou UNIX
  • Accès à un terminal ou à une ligne de commande
  • Un utilisateur autorisé à accéder aux fichiers et répertoires nécessaires

Comment Greper plusieurs modèles – Syntaxe

La syntaxe de base de grep lors de la recherche de plusieurs modèles dans un fichier inclut l'utilisation de grep commande suivie de chaînes et du nom du fichier ou de son chemin.

Les modèles doivent être entourés de guillemets simples et séparés par le symbole pipe. Utilisez la barre oblique inverse avant le tube | pour les expressions régulières.

grep 'pattern1\|pattern2' fileName_or_filePath

La dernière façon d'utiliser grep est avec le -E option. Cette option traite le modèle que vous avez utilisé comme une expression régulière étendue .

grep -E 'pattern1|pattern2' fileName_or_filePath

La version obsolète de grep étendu est egrep .

egrep 'pattern1|pattern2' fileName_or_filePath

Une autre option consiste à ajouter plusieurs modèles distincts au grep commande.

Pour ce faire, utilisez le -e indicateur et continuez à ajouter le nombre souhaité de modèles de recherche :

grep -e pattern1 -e pattern2 fileName_or_filePath

Quelle est la différence entre grep, grep -E et egrep ?

Le egrep commande est une version obsolète de grep étendu. Il fait la même fonction que grep -E .

La différence entre grep et grep étendu est que grep étendu inclut des méta-caractères qui ont été ajoutés ultérieurement.

Ces caractères sont la parenthèse () , accolades {} , et point d'interrogation . Le caractère pipe | est également traité comme un méta-caractère dans le grep étendu.

Exemples d'utilisation de Grep pour plusieurs chaînes, modèles et mots

Pour vous assurer que vous comprenez comment utiliser grep pour rechercher plusieurs chaînes, nous vous suggérons de créer un fichier avec du texte sur lequel nous allons essayer plusieurs cas d'utilisation différents.

Dans notre cas, nous avons nommé le fichier sample.txt et ajouté quelques paragraphes de texte. Nous avons stocké le fichier dans le répertoire du test utilisateur, c'est-à-dire dans /home/test/sample.txt

Comment regrouper plusieurs modèles dans un fichier

Dans les exemples ci-dessous, nous utiliserons grep au lieu de grep étendu. N'oubliez pas d'utiliser la barre oblique inverse avant le caractère pipe .

Étant donné que grep ne prend pas en charge le symbole pipe comme opérateur d'alternance, vous devez utiliser le caractère d'échappement (barre oblique inverse \) pour indiquer au grep commande pour traiter le tuyau différemment.

Par exemple, pour rechercher les mots extra et valeur dans le sample.txt fichier utilisez cette commande :

grep 'extra\|value' sample.txt

La sortie met en surbrillance la chaîne que vous vouliez grep.

Si le même fichier se trouve dans un autre répertoire , vous devez accéder à ce répertoire ou utiliser le chemin complet du fichier :

grep 'extra\|value' /home/test/Desktop/sample.txt

Pour rechercher plus de deux mots , continuez à les ajouter de la même manière.

Par exemple, pour rechercher trois mots, ajoutez la chaîne de caractères souhaitée suivie d'une barre oblique inverse et d'une barre verticale :

grep 'extra\|value\|service' sample.txt

Voyons à quoi ressemble la commande grep ci-dessus lors de l'utilisation de grep -E , egrep , et grep -e :

grep -E ‘extra|value|service’ sample.txt
egrep ‘extra|value|service’ sample.txt
grep -e extra -e value -e service sample.txt

Nous utiliserons grep dans d'autres exemples, mais vous pouvez utiliser la syntaxe que vous préférez.

Rechercher plusieurs correspondances exactes dans un fichier

Si vous souhaitez trouver des correspondances exactes pour plusieurs modèles, transmettez le -w indicateur au grep commande.

grep -w 'provide\|count' sample.txt

Par exemple, la sortie ci-dessous montre la différence entre une recherche sans -w et avec ça :

Comme vous pouvez le voir, les résultats sont différents. La première commande affiche toutes les lignes avec les chaînes que vous avez utilisées.

La deuxième commande montre comment grep les correspondances exactes pour plusieurs chaînes. La sortie n'imprime que les lignes contenant les mots exacts.

Ignorer la casse lors de l'utilisation de Grep pour plusieurs chaînes

Pour éviter de manquer quelque chose lorsque vous recherchez plusieurs modèles, utilisez le -i drapeau pour ignorer la casse.

Par exemple, nous ignorerons la casse avec cette commande :

grep -i 'phoenix\|linux' sample.txt

La sortie montre comment les deux commandes diffèrent. Si vous incluez le -i flag et ignorer la casse des lettres, le résultat pour plusieurs correspondances inclut toutes les correspondances.

De cette façon, vous obtenez des résultats supplémentaires. Si vous ajoutez également le -w flag à cette commande, vous pouvez affiner encore plus les résultats :

Afficher le nombre de correspondances multiples dans un fichier

Supposons que vous surveilliez un fichier journal et que vous souhaitiez voir si le nombre d'avertissements ou de messages augmente. Vous ne voulez pas voir les résultats détaillés lorsqu'un grand nombre de correspondances reviennent.

Par exemple, pour afficher le nombre de correspondances multiples dans le bootstrap.log fichier, saisissez :

grep -c 'warning\|error' /var/log/bootstrap.log

La sortie imprime le nombre de correspondances. De cette façon, vous pouvez déterminer rapidement si le nombre d'avertissements et d'erreurs a augmenté.

Grep pour plusieurs modèles dans un type de fichier spécifique

Vous pouvez utiliser grep pour rechercher plusieurs chaînes dans un certain type de fichier uniquement. Si vous souhaitez surveiller les fichiers journaux dans un répertoire ou si vous souhaitez effectuer une recherche dans tous les fichiers texte, utilisez un astérisque et l'extension de fichier au lieu d'un nom de fichier.

Par exemple, pour rechercher des avertissements et des erreurs dans tous les .log fichiers dans /var/log/ répertoire, saisissez :

grep 'warning\|error' /var/log/*.log

Pour mieux illustrer le fonctionnement de cette option, nous n'afficherons que le nombre de correspondances.

La sortie affiche tous les fichiers dans lesquels grep a recherché les chaînes que vous avez utilisées.

Rechercher récursivement plusieurs modèles dans un fichier

Le grep La commande recherche uniquement dans le répertoire en cours lorsque vous utilisez le caractère générique astérisque.

Pour inclure tous les sous-répertoires lors de la recherche de plusieurs modèles, ajoutez le -R opérateur à grep :

grep -R 'warning\|error' /var/log/*.log

La sortie renverra les résultats de tous les fichiers grep commande trouvée dans /var/log/ répertoire et ses sous-répertoires.


Linux
  1. Comment trouver plusieurs chaînes dans des fichiers ? ?

  2. Comment puis-je rechercher un motif multiligne dans un fichier ?

  3. Comment rechercher le contenu de plusieurs fichiers pdf ?

  4. Comment grep pour le contenu après le modèle?

  5. Comment concaténer plusieurs lignes de sortie sur une seule ligne ?

Comment Grep pour plusieurs chaînes et modèles

Comment faire bon usage de la commande 'grep'

Comment grep \n dans le fichier

Recherche de plusieurs motifs (mots) avec ack ?

Comment chown répertoire pour plusieurs utilisateurs?

Comment grep pour unicode � dans un script bash