GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser grep sous Linux

L'une des opérations les plus couramment utilisées dans le terminal Linux consiste à rechercher dans les fichiers texte et à filtrer les sorties standard ou les flux d'erreurs. Linux fournit un excellent outil qui nous permet de résoudre cette tâche facilement - grep. Dans cet article, nous couvrirons les cas d'utilisation les plus courants de grep, ce qui simplifiera définitivement votre routine quotidienne.

Qu'est-ce que grep

Grep signifie Global Regular Expression Print. C'est un utilitaire très pratique lorsqu'il s'agit de rechercher dans un grand nombre de fichiers texte (journaux, par exemple).

Grep est la commande la plus utile sous Linux/Unix pour les administrateurs système, les développeurs et les ingénieurs DevOps. L'objectif principal de cet outil est de rechercher des chaînes ou des modèles dans un fichier spécifié, ou de filtrer la sortie d'autres commandes.

Ce modèle que nous avons mentionné ci-dessus est connu sous le nom d'expression régulière.

La commande grep affiche une ligne sur le terminal avec la chaîne si elle trouve une correspondance avec la requête de recherche.

Il existe de nombreux exemples d'utilisation de grep, alors voyons comment et quand vous pouvez l'utiliser.

Installation de grep sous Linux

Habituellement, grep est installé dans la plupart des systèmes Linux et même dans les petits conteneurs Docker. Mais si vous ne l'avez pas installé sur votre système, vous pouvez le faire en utilisant la commande suivante, par exemple :

apt-get updateapt-get install -y grep

exemples d'utilisation de grep

Dans cette partie de l'article, nous couvrirons les exemples les plus courants d'utilisation de grep.

Filtrer une sortie de commande

Vous pouvez utiliser la commande grep pour rechercher et imprimer n'importe quelle ligne à partir de n'importe quelle sortie de commande Linux qui correspond au modèle spécifié.

Dans cet exemple, nous allons vérifier quels packages Python 3 avons-nous dans notre système Ubuntu :

dpkg -l | grep python3

Dans cet exemple :

  • dpkg -l imprimera tous les packages installés
  • grep filtrera dpkg sortie et impression uniquement des chaînes, qui contiennent python3 chaîne

De la même manière, vous pouvez afficher les informations sur le modèle de CPU, par exemple :

grep -i 'Model' /proc/cpuinfo

Rechercher une chaîne dans un fichier

Dans cet exemple, la commande grep recherchera la chaîne "root" dans le fichier "/etc/passwd" et l'affichera si la chaîne a été trouvée.

En règle générale, nous utilisons cette commande pour vérifier si le système dispose d'un compte d'utilisateur avec un nom spécifié (exemple root in out) : 

grep root /etc/passwd

Rechercher dans plusieurs fichiers

Pour trouver la chaîne dans plusieurs fichiers à la fois, utilisez la commande grep et spécifiez les noms de fichiers sur une seule ligne. Vous pouvez utiliser des expressions régulières pour rechercher dans les fichiers par masque.

Téléchargeons Apache access.log accessible au public :

 mkdir -p /var/log/httpd
 cd /var/log/httpd
 wget http://www.almhuette-raith.at/apache-log/access.log 

Maintenant, divisons ce fichier en plusieurs fichiers par 10 000 lignes dans le fichier :

Maintenant, nous pouvons rechercher dans les fichiers l'erreur de serveur HTTP 500 :

grep ' 500 ' xac xad

Pour rechercher dans tous les fichiers du répertoire de travail actuel, utilisez * après le motif.

Dans l'exemple ci-dessous, la commande grep recherchera 500 erreurs de serveur dans tous les fichiers :

grep ' 500 ' *

Avec le -w dans la commande grep, vous pouvez rechercher les fichiers contenant un modèle de mot :

grep -w 'Windows XP' *

La commande grep est suffisamment intelligente pour nous permettre d'effectuer une recherche quelle que soit la sensibilité à la casse du modèle de recherche.

Pour ce faire, nous devons utiliser -i comme argument.

Voici le même exemple, mais maintenant nous effectuons un filtrage insensible à la casse :

grep -i -w 'windows xp' *

Fichiers de sortie contenant le motif de recherche

Vous pouvez utiliser -l option pour afficher tous les noms de fichiers contenant le motif recherché :

grep -l -i -w 'windows xp' *

Compter les correspondances par fichier

Si vous voulez connaître le nombre de fois que votre modèle correspond dans tous les fichiers, ajoutez le -c choix :

grep -c -i -w 'windows xp' *

Nombre de lignes avant le motif recherché

Pour afficher les lignes d'un fichier avant le motif de recherche, ajoutez -B argument suivi du nombre de nombres que vous souhaitez récupérer dans le fichier :

grep -B 3 -i -w 'windows xp' xaf

Nombre de lignes après le motif recherché

De même, vous pouvez utiliser -A argument pour spécifier le nombre de lignes à imprimer après le motif recherché :

grep -A 3 -i -w 'windows xp' xaf

Imprimer le numéro de ligne pour la correspondance du modèle de recherche

Pour afficher le numéro de ligne du motif recherché trouvé, vous pouvez utiliser -n argument :

grep -n -i -w 'windows xp' xaf

Reconnaître le début de la chaîne

Dans l'exemple suivant, nous utiliserons la commande grep pour rechercher toutes les requêtes provenant de l'adresse IP spécifique.

Toutes les lignes recherchées doivent commencer par le 5.34.180.192 terme.

grep "^5.34.180.192" xaf

Reconnaître la fin de la chaîne

Ajouter $ à la fin du motif pour trouver les lignes se terminant par la chaîne recherchée :

grep "Chrome/62\" \"-\"$" xaf

Dès que notre chaîne de recherche contient " symboles, nous les échappons avec le \ .

Nous pouvons utiliser grep pour rechercher plusieurs modèles à la fois. Ajouter -e argument avant chaque motif de recherche :

grep -e "Chrome/62\" \"-\"$" -e "15/Mar/2021:08:35:23" xaf

Ici, nous recherchons toutes les chaînes du fichier qui se terminent par Chrome/62" "-" ET contenir une date et une heure spécifiques 15/Mar/2021:08:35:23 .

Changer la couleur de sortie

Comme la sortie colorée augmente la lisibilité, vous pouvez la changer pour votre couleur préférée en définissant GREP_COLOR variable d'environnement :

GREP_COLOR='1;35' grep --color=always 'admin' /etc/passwd

Vous pouvez obtenir plus d'informations sur la variable GREP_COLOR dans la documentation officielle de grep.

Résumé

La commande grep est extrêmement utile lorsqu'il s'agit de filtrer le contenu des fichiers texte ou le résultat de la sortie des commandes. Dans cet article, nous avons couvert les commandes grep les plus couramment utilisées, ce qui simplifiera votre expérience shell.

Nous espérons que cet article vous a été utile. Si oui, s'il vous plaît, aidez-nous à le diffuser dans le monde.


Linux
  1. Comment utiliser la commande Linux grep

  2. Comment utiliser la commande grep sous Linux/UNIX

  3. Comment utiliser la commande Disown sous Linux

  4. Comment utiliser la commande Su sous Linux

  5. Comment utiliser la commande d'écran Linux

Comment utiliser la commande grep sur Debian 10

Comment utiliser la commande sysctl sous Linux

Comment utiliser la commande d'arrêt de Linux

Comment utiliser la commande Mkdir sous Linux

Comment utiliser la commande jobs sous Linux

Utilisation de la commande grep sous Linux