Comprendre la commande grep avec des exemples pratiques pour filtrer et afficher facilement le contenu du fichier
GREP
signifie « Impression d'expressions régulières globales ». 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 du grep
commande avec quelques exemples pratiques en détail.
Options disponibles avec grep
commander
Voici quelques-unes des options fondamentales que vous utiliserez fréquemment avec le grep
commander.
Option | La description |
-je | 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 |
En utilisant le grep
commander
grep
La commande est généralement utilisée avec le tube (|
) utilitaire. Il peut être implémenté avec le shell pipe lorsque vous souhaitez l'utiliser avec d'autres commandes Linux. Bien que, grep
peut également être utilisé individuellement sans le tuyau (|
) utilitaire.
Voyons quelques-unes des syntaxes de base du grep
avec et sans l'utilitaire pipe.
Permettez-moi d'abord de vous montrer l'exemple de fichier texte que j'utiliserai pour illustrer le grep
commander.
L'INDE EST UN BEAU PAYS DE PEUPLE AIMANT LA PAIX. l'inde repose sur trois piliers que sont le législatif, l'exécutif et le judiciaire. L'Inde est un beau pays de gens épris de paix. L'Inde se soucie de la population car ses ressources en coordonnées cartésiennes sont importantes pour toutes les coordonnées cartésiennes. Voici deux lignes vides. l'utilisation d'une char à bœufs est courante dans le village pour les tâches agraires. C'est la fin du fichier exemple.
grep
utilisé avec tuyau ( | )utilitaire
grep
La commande peut être implémentée avec d'autres commandes Linux à l'aide des tubes shell. Comme, en utilisant le chat
pour afficher le contenu du fichier mais en même temps diriger la sortie à l'aide de la grep
commande pour afficher uniquement le contenu que vous désirez voir. Cela sera plus clair lorsque nous parcourrons l'exemple.
Syntaxe:
[commande] | grep [chaîne]
Exemple:
exemple de chat.txt | législature grep
Ici, j'ai utilisé le chat
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.
Sortir:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep législature inde repose sur trois piliers : législatif, exécutif et judiciaire. gaurav@ubuntu:~/workspace$
grep
utilisé sans tuyau ( | )utilitaire
grep
peut même être utilisé directement comme une commande individuelle sans utiliser le tube ( |
) utilitaire.
Syntaxe:
grep [string_to_be_searched] [nom de fichier]
Exemple:
grep Inde sample.txt
Sortir:
L'Inde est un beau pays de gens épris de paix. L'Inde se soucie de la population car c'est une ressource
Ainsi, j'ai utilisé le grep
directement pour filtrer les lignes qui contiennent la chaîne « Inde » à partir du fichier texte « sample.txt ».
Recherche insensible à la casse en utilisant grep
commander
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 paix sample.txt
Dans ce cas, nous n'obtiendrons pas de sortie car il n'existe pas de mot "paix" dans le fichier exemple. Nous avons le mot « Paix » avec un « P » majuscule. Le mot est le même mais quand on utilise le grep
commande sans aucune option, elle recherche la correspondance exacte dans le fichier, sans tenir compte de tout changement dans la casse des lettres.
Pour éviter cette ambiguïté, vous pouvez simplement utiliser le -je
option qui dit littéralement au grep
commander "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 [chaîne] [nom de fichier]
Exemple:
grep -i Peace sample.txt
Sortir:
L'INDE EST UN BEAU PAYS DE PEUPLE AIMANT LA PAIX. L'Inde est un beau pays de gens épris de paix.
Toutes les lignes correspondantes sont affichées quel que soit le cas dans lequel se trouve la chaîne correspondante.
Recherche récursive utilisant grep
commander
le -r
L'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 [chaîne] [chemin_fichier]
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.
Sortir:
./context_log.policy:// catalina.policy - Autorisations de politique de sécurité pour Tomcat 7 ./context_log.policy:// Remarque : si tomcat-juli.jar est dans ${catalina.base} et non dans ${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 : autorisation java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server" ; ./context.xml: ./catalina.properties:# - JAR Bootstrap Tomcat ./catalina.properties:# - JAR API Tomcat ./catalina.properties:# - JAR Tomcat ./catalina.properties:# - Commun non Tomcat JAR ./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 :
REMARQUE: lors de l'utilisation du -r
option avec le grep
commande, nous devons fournir le chemin du fichier et non le nom du fichier
Recherche de mots entiers uniquement avec grep
commander
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 panier sample.txt
Sortir:
Coordonnées cartésiennes importance de toutes les coordonnées cartésiennes. l'utilisation d'une charrette à bœufs est courante dans le village pour les tâches agraires. La charrette a disparu car le garçon l'a laissée en vrac.
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 le -w
option avec le grep
commande pour résoudre cette ambiguïté.
Syntaxe:
grep -i -w [chaîne] [nom de fichier]
Exemple:
grep -i -w panier sample.txt
Sortir:
l'utilisation d'une char à bœufs est courante dans le village pour les tâches agraires. Le chariot a disparu alors que le garçon l'a laissé libre.
Maintenant, lorsque vous avez utilisé le -w
option avec grep
vous n'obtiendrez que les lignes dans lesquelles le mot « panier » est utilisé dans son ensemble.
Recherche inversée avec grep
commander
grep
La commande peut également être utilisée de manière inverse. Nous pouvons utiliser le 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 le -v
option avec le grep
commander.
Syntaxe:
grep -i -v [chaîne] [nom de fichier]
Exemple:
grep -i -v ressource exemple.txt
Sortir:
L'INDE EST UN BEAU PAYS DE PEUPLE AIMANT LA PAIX. l'inde repose sur trois piliers que sont le législatif, l'exécutif et le judiciaire. L'Inde est un beau pays de gens épris de paix. coordonnées cartésiennes importance de toutes les coordonnées cartésiennes. l'utilisation d'une char à bœufs est courante dans le village pour les tâches agraires. C'est la fin du fichier exemple.
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 du grep
La 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 du grep
commander. Linux vous offre une option où vous pouvez afficher le nombre d'occurrences de la correspondance.
Syntaxe:
grep -i -c [chaîne] [nom de fichier]
Exemple:
grep -i -c inde sample.txt
Sortir:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/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é le -je
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 en toute sécurité omettre le -je
option.
Conclusion
Nous avons appris les utilisations fondamentales du grep
sur les systèmes Linux de ce didacticiel. 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.