Comprendre la commande grep avec des exemples pratiques pour filtrer et afficher facilement le contenu du fichier
GREP
signifie 'Global Regular Expression Print'. C'est un utilitaire de ligne de commande utile fourni par Linux, pour rechercher la ligne de texte qui correspond au modèle fourni par l'utilisateur.
grep
prend l'entrée de l'utilisateur sous la forme de chaînes ou de mots que l'utilisateur souhaite rechercher dans un fichier particulier. La commande vérifie ensuite le fichier spécifié par l'utilisateur pour ce modèle, puis renvoie les lignes qui correspondent au modèle fourni.
Il fait un excellent travail en filtrant le contenu d'un fichier, facilitant ainsi notre tâche de rechercher un contenu particulier sur un ou plusieurs fichiers simultanément.
Dans cet article, passons en revue le fonctionnement de la grep
commande avec quelques exemples pratiques en détail.
Options disponibles avec la grep
commande
Ce sont quelques-unes des options fondamentales que vous utiliserez fréquemment avec la grep
commande.
Option |
La description |
-i |
Pour une recherche insensible à la casse |
-r |
Pour rechercher récursivement tous les fichiers dans le répertoire spécifié et ses sous-répertoires |
-c |
Pour afficher le nombre total de fois qu'une chaîne apparaît |
-v |
Pour afficher les lignes qui ne correspondent pas |
-w |
Filtrer pour ce mot particulier utilisé séparément |
Utilisation de la grep
commande
grep
La commande est généralement utilisée avec l' |
utilitaire pipe ( ). Il peut être implémenté avec le shell pipe lorsque vous souhaitez l'utiliser avec d'autres commandes Linux. Cependant, grep
peut également être utilisé individuellement sans l' |
utilitaire pipe ( ).
Voyons quelques-unes des syntaxes de base de la grep
commande avec et sans l'utilitaire pipe.
Permettez-moi d'abord de vous montrer l'exemple de fichier texte que j'utiliserai pour illustrer la grep
commande.
INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
india stands on three pillars of legislature, executive and judiciary.
India Is a Beautiful Country Of Peace Loving People.
India cares for the people as it's resource
cartesian coordinates
importance of all th cartesian coordinates.
Following are two empty lines.
use of a bullock cart is a common sight in the village for the agrarian chores.
This is the end of the sample file.
grep
utilisé avec l' utilitaire pipe ( | )
grep
La commande peut être implémentée avec d'autres commandes Linux à l'aide des tubes shell. Comme, utiliser la cat
commande pour afficher le contenu du fichier mais en même temps diriger la sortie en utilisant la grep
commande pour afficher uniquement le contenu que vous souhaitez voir. Cela sera plus clair lorsque nous parcourrons l'exemple.
Syntaxe :
[command] | grep [string]
Exemple :
cat sample.txt | grep legislature
Ici, j'ai utilisé la cat
commande pour afficher quelques lignes du fichier 'sample.txt'. Seules les lignes contenant le mot « législature » doivent être affichées et ignorer le reste des lignes.
Sortie :
[email protected]:~/workspace$ cat sample.txt | grep legislature
india stands on three pillars of legislature, executive and judiciary.
[email protected]:~/workspace$
grep
utilisé sans utilitaire pipe ( | )
grep
peut même être utilisé directement comme une commande individuelle sans utiliser l' |
utilitaire pipe ( ).
Syntaxe :
grep [string_to_be_searched] [filename]
Exemple :
grep India sample.txt
Sortie :
India Is a Beautiful Country Of Peace Loving People.
India cares for the people as it's resource
Ainsi, j'ai utilisé la grep
commande directement pour filtrer les lignes qui contiennent la chaîne 'Inde' du fichier texte 'sample.txt'.
Recherche insensible à la casse à l'aide de la grep
commande
Linux est très prudent quant à la sensibilité à la casse lorsque nous lançons les commandes sur le terminal. Cela oblige l'utilisateur à faire attention à la casse de la chaîne insérée dans la commande.
Voyons cela à travers un exemple.
grep peace sample.txt
Dans ce cas, nous n'obtiendrons pas de sortie car il n'existe pas de mot comme « paix » dans le fichier exemple. Nous avons le mot 'Paix' avec un 'P' majuscule. Le mot est le même mais lorsque nous utilisons la grep
commande sans aucune option, elle recherche la correspondance exacte dans le fichier, sans tenir compte de tout changement dans la casse.
Pour éviter cette ambiguïté, vous pouvez simplement utiliser l' -i
option qui dit littéralement à la grep
commande « oubliez la casse dans laquelle j'ai mis la chaîne et recherchez simplement tous les modèles correspondants dans le fichier ».
Syntaxe:
grep -i [string] [filename]
Exemple :
grep -i peace sample.txt
Sortie :
INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
India Is a Beautiful Country Of Peace Loving People.
Toutes les lignes correspondantes sont affichées quel que soit le cas dans lequel se trouve la chaîne correspondante.
Recherche récursive à l'aide de la grep
commande
L' -r
option recherchera tous les fichiers d'un répertoire et tous ses sous-répertoires qui correspondent au modèle de chaîne fourni par l'utilisateur dans la commande.
Syntaxe :
grep -i -r [string] [file_path]
Exemple :
grep -i -r tomcat /home/gaurav/workspace
La chaîne ici est 'tomcat' et elle sera recherchée dans l'espace de travail du répertoire. Tous les sous-répertoires et fichiers du répertoire « espace de travail » seront également analysés pour correspondre au modèle de chaîne fourni.
Sortie :
./context_log.policy:// catalina.policy - Security Policy Permissions for Tomcat 7
./context_log.policy:// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},
./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}
./context_log.policy:grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
./context_log.policy: permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server";
./context.xml:
./catalina.properties:# - Tomcat Bootstrap JARs
./catalina.properties:# - Tomcat API JARs
./catalina.properties:# - Tomcat JARs
./catalina.properties:# - Common non-Tomcat JARs
./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar
./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true
./catalina.properties:#tomcat.util.buf.StringCache.char.enabled=true
./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000
./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000
./server.xml: pathname="conf/tomcat-users.xml" />
./server.xml:
./tomcat-users.xml:
./tomcat-users.xml:
./web.xml:
./web.xml:
REMARQUE : Lors de l'utilisation de l' -r
option avec la grep
commande, nous devons fournir le chemin du fichier et non le nom du fichier
Recherche de mots entiers uniquement avec la grep
commande
Il arrive souvent que vous recherchiez un mot mais que vous finissiez par remplir votre terminal avec les lignes correspondantes qui contiennent votre mot correspondant mais pas en tant que mot individuel. Vous pouvez voir les lignes qui contiennent des mots dont la sous-partie est la chaîne que vous avez entrée.
Confus avec ça? Ne vous inquiétez pas, c'est beaucoup plus facile à comprendre une fois que vous avez l'exemple.
Exemple :
Ici, je veux rechercher un mot individuel « panier » et afficher toutes les lignes correspondant à ce mot dans le fichier « sample.txt ».
grep -i cart sample.txt
Sortie :
Cartesian coordinates
importance of all the Cartesian coordinates.
use of a bullock cart is a common sight in the village for the agrarian chores
The cart went missing as the boy left it loose.
Dans la sortie, vous pouvez observer que le mot « Cartésien » contient également le mot « panier » et, par conséquent, les lignes contenant le mot « Cartésien » sont également affichées même si nous ne voulons pas qu'elles soient affichées.
Vous pouvez utiliser l' -w
option avec la grep
commande pour résoudre cette ambiguïté.
Syntaxe :
grep -i -w [string] [filename]
Exemple :
grep -i -w cart sample.txt
Sortie :
use of a bullock cart is a common sight in the village for the agrarian chores.
The cart went missing as the boy left it loose.
Maintenant, lorsque vous avez utilisé l' w
option – avec, grep
vous n'obtiendrez que les lignes dans lesquelles le mot « panier » est utilisé dans son ensemble.
Recherche inversée à l'aide de la grep
commande
grep
La commande peut également être utilisée de manière inverse. Nous pouvons utiliser la grep
commande à l'inverse en masquant les lignes correspondantes et en n'affichant que les lignes où la correspondance n'est pas trouvée. Vous pouvez le faire en utilisant l' -v
option avec la grep
commande.
Syntaxe :
grep -i -v [string] [filename]
Exemple :
grep -i -v resource sample.txt
Sortie :
INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
india stands on three pillars of legislature, executive and judiciary.
India Is a Beautiful Country Of Peace Loving People.
cartesian coordinates
importance of all th cartesian coordinates.
use of a bullock cart is a common sight in the village for the agrarian chores.
This is the end of the sample file.
Dans la sortie, toutes les autres lignes sont affichées à l'exception de la ligne qui contient le mot « ressource ».
Compter les occurrences de la chaîne correspondante
La sortie de la grep
commande est généralement très longue si les données du fichier sont volumineuses. Plus il y a de correspondances, plus les sorties de la grep
commande sont longues . Linux vous offre une option où vous pouvez afficher le nombre d'occurrences de la correspondance.
Syntaxe :
grep -i -c [string] [filename]
Exemple :
grep -i -c india sample.txt
Sortie :
[email protected]:~/workspace$ grep -i -c india sample.txt
4
[email protected]:~/workspace$
Ici, la sortie est un nombre qui est le nombre d'occurrences du mot « Inde » dans le fichier sample.txt.
REMARQUE : j'ai utilisé l' -i
option dans chaque exemple pour être juste en sécurité avec le problème de sensibilité à la casse. Si vous êtes sûr de la casse du mot que vous recherchez, vous pouvez alors omettre l' -i
option en toute sécurité .
Conclusion
Nous avons appris les utilisations fondamentales de la grep
commande sur les systèmes Linux dans ce tutoriel. Nous avons également appris à afficher divers contenus qui correspondent le mieux à nos besoins et à ne pas encombrer le terminal avec des charges de lignes. grep
La commande sera sûrement un gain de temps si elle est utilisée pour analyser de grands ensembles de données.