Comment utiliser la commande Grep sous Linux

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.

OptionLa description
-jePour une recherche insensible à la casse
-rPour rechercher récursivement tous les fichiers dans le répertoire spécifié et ses sous-répertoires
-cPour afficher le nombre total de fois qu'une chaîne apparaît
-vPour afficher les lignes qui ne correspondent pas
-wFiltrer 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.