Recherche de site Web

Comment utiliser la commande grep sur Debian 10


Grep signifie impression d'expression régulière globale. Il s'agit d'une commande utile et largement utilisée par les ingénieurs système Linux lors de la recherche d'une chaîne ou de modèles dans des fichiers normaux et dans le système.

Dans cet article, je vais démontrer l'utilisation de la commande grep avec un grand nombre d'exemples. J'ai testé toutes les commandes et exemples sur une machine Debian 10.

Prérequis

Vous devez disposer d'une seule machine Debian 10 avec les privilèges root.

Installation de la commande grep sur Debian 10

Par défaut, grep est installé sur la plupart des systèmes, y compris Debian 10. S'il n'est pas installé, ouvrez le terminal et exécutez la commande suivante avec les privilèges root.

apt-get install grep

Lorsqu'une confirmation vous est demandée, appuyez sur y puis entrez à partir du clavier. Attendez la fin de l'installation.

Puisque grep était déjà installé sur ma machine, vérifiez la capture d'écran ci-dessus. Vérifions sa version en exécutant la commande suivante sur le terminal.

grep --version

Il doit également renvoyer la version ainsi que d'autres détails, comme indiqué ci-dessous.

Utilisation de la commande grep

Une fois que la commande grep est disponible sur notre machine, nous pouvons jouer avec.

Recherche d'un fichier ou d'un répertoire spécifique dans votre système

Lorsque vous souhaitez rechercher ou localiser un fichier spécifique dans votre système, la syntaxe de la commande doit être la suivante.

ls -l | grep -i "nom du fichier ou du répertoire"

Je souhaite rechercher un répertoire réseau dans /etc/. La commande complète devrait ressembler à ce qui suit.

ls -l /etc/ | grep -i "network"

L'option « i » ignore la sensibilité à la casse. Par conséquent, il doit traiter le réseau, le réseau ou le RÉSEAU comme similaires.

Vous trouverez ci-dessous un exemple de sortie.

Supposons que je souhaite rechercher un fichier "interfaces.d" situé dans /etc/network/, vous devez exécuter la commande suivante.

ls -l /etc/network/ | grep -i "interfaces.d"

Il est nécessaire de mettre le mot que vous souhaitez rechercher entre guillemets s'il contient des espaces. Supposons que nous recherchions « démon réseau », la commande ci-dessus devrait ressembler à ce qui suit.

ls -l /etc/réseau/ | grep -i "démon d'interface"

Rechercher un mot complet avec grep

Vous l'avez peut-être remarqué, grep a renvoyé toutes sortes de résultats qui incluent "réseau", par exemple. réseaux, en réseau, mise en réseau ou abcnetworking, etc. Si vous souhaitez limiter votre recherche à ce mot spécifique, vous devez utiliser l'option -w comme suit.

ls -l /etc/ | grep -i -w network

Vous trouverez ci-dessous un exemple de sortie.

Rechercher un texte spécifique dans un fichier

Nous avons un cas où vous avez un fichier volumineux et vous souhaitez rechercher un texte spécifique. La syntaxe de la commande doit être la suivante.

grep - i "texteque vous souhaitez rechercher" "nom de fichier et chemin"

Supposons que je souhaite rechercher le mot « fox » dans test.txt qui se trouve dans mon répertoire actuel. Exécutez la commande suivante sur un terminal.

grep -i "fox" test.txt

Vous trouverez ci-dessous un exemple de sortie qui renvoie uniquement les lignes du fichier contenant le mot « fox ».

Effectuer une recherche récursive (Recherche dans plusieurs fichiers)

Si vous souhaitez rechercher un texte dans un grand nombre de fichiers et de sous-répertoires au sein d'un répertoire, vous pouvez effectuer une recherche récursive à l'aide de l'option -r.

grep -i -r "fox"

Vous trouverez ci-dessous un exemple de sortie qui montre que le mot fox est présent dans les fichiers test.txt et tree.txt dans la ligne affichée.

Vous pouvez également fournir un chemin de répertoire et il recherchera tous les fichiers de ce répertoire et de ses sous-répertoires.

Supposons que je souhaite effectuer une recherche récursive pour le texte "interfaces" dans /etc/ et ses sous-répertoires. La commande doit être exécutée comme suit.

grep -i -r interfaces /etc/

Vous trouverez ci-dessous un exemple de sortie.

Rechercher deux mots différents avec une seule commande grep

Vous pouvez rechercher deux mots différents avec une seule commande egrep (qui est une variante de grep) comme suit. Supposons que je souhaite rechercher des mots complets renard et paresseux dans plusieurs fichiers en utilisant l'option -r. Vous devez exécuter la commande suivante sur le terminal.

egrep -w -r "fox|lazy"

Vous trouverez ci-dessous un exemple de sortie.

Numéroter la ligne qui correspond au texte

Une autre option utile est le -n qui numérote les lignes correspondant au texte. Voici l'exemple illustrant comment utiliser l'option -n.

grep -i -n "fox" test.txt

Vous trouverez ci-dessous un exemple de sortie qui numérote les lignes correspondant au mot « renard ».

Inverser la recherche

C'est le contraire de ce que nous avons fait ci-dessus. Si vous souhaitez renvoyer un texte qui n'inclut pas le mot que vous spécifiez, vous pouvez utiliser l'option -v.

Vous trouverez ci-dessous l'exemple illustrant l'utilisation de l'option -v.

grep -v -i "fox" test.txt

Vous trouverez ci-dessous un exemple de sortie.

Toutes les options ci-dessus (-n, etc.) peuvent également être appliquées avec l'option -v.

Compter les matchs

Si vous souhaitez simplement compter le nombre de correspondances avec un texte spécifique, vous pouvez utiliser l'option -c.

Comptons le mot "fox" dans test.txt situé à l'intérieur du répertoire courant. Exécutez la commande suivante sur le terminal.

grep -i -c fox test.txt

Vous trouverez ci-dessous un exemple de sortie après l'exécution de la commande ci-dessus, qui montre que le mot fox correspond trois fois dans le fichier test.txt.

Afficher les noms de fichiers qui correspondent au texte spécifique

Si vous souhaitez connaître les fichiers contenant votre mot spécifique, vous pouvez utiliser l'option -l avec -r  comme suit. En supposant que tous les fichiers se trouvent dans votre répertoire actuel et que le mot spécifique que vous recherchez ou correspondez est « renard ».

grep -i -r -l fox

Vous trouverez ci-dessous un exemple de sortie qui montre que le mot fox est présent dans test.txt ainsi que dans un sous-répertoire et un fichier asif.txt.

Afficher uniquement le texte correspondant

Par défaut, grep affiche la ligne entière qui correspond au texte ou au mot souhaité. Si vous souhaitez que grep vous montre les mots correspondants, vous pouvez utiliser l'option -o comme suit.

grep -i -o fox test.txt

Vous trouverez ci-dessous un exemple de sortie.

Afficher les lignes commençant par un ou plusieurs mots spécifiques

Si vous souhaitez récupérer toutes les lignes qui commencent par un ou plusieurs mots spécifiques, vous pouvez utiliser l'opérateur ^comme suit.

En supposant que vous souhaitiez renvoyer toutes ces lignes commençant par "unix" et que le fichier soit log.txt situé dans votre répertoire actuel.

Exécutez la commande suivante sur le terminal.

grep -i "^unix" log.txt

Vous trouverez ci-dessous un exemple de sortie.

Afficher les lignes qui se terminent par le(s) mot(s) spécifique(s)

Si vous souhaitez renvoyer toutes ces lignes d'un fichier qui se termine par le(s) mot(s) spécifique(s), vous pouvez utiliser l'opérateur $comme suit. En supposant que le mot est "linux" et que le fichier que vous souhaitez rechercher est rev.txt situé dans votre répertoire actuel.

Exécutez la commande suivante sur le terminal.

grep -i "linux$" rev.txt

Vous trouverez ci-dessous un exemple de sortie.

C'était donc mon tutoriel sur l'utilisation de la commande grep. J'ai démontré la plupart des options grep qui sont les plus utilisées et dont vous pourriez avoir besoin dans votre travail quotidien. Il existe quelques variantes de la commande grep, notamment zgrep, etc. Vous pouvez les explorer par vous-même.

Articles connexes: