GNU/Linux >> Tutoriels Linux >  >> Linux

15 exemples pratiques de commande Grep sous Linux / UNIX


Photo avec l'aimable autorisation d'Alexôme

Vous devriez maîtriser la commande Linux grep.

Cela fait partie de la série en cours de 15 exemples, où 15 exemples détaillés seront fournis pour une commande ou une fonctionnalité spécifique. Plus tôt, nous avons discuté de 15 exemples pratiques pour la commande Linux find, l'historique de la ligne de commande Linux et la commande mysqladmin.


Dans cet article, passons en revue 15 exemples pratiques de la commande Linux grep qui seront très utiles aux débutants comme aux experts.


Créez d'abord le fichier demo_file suivant qui sera utilisé dans les exemples ci-dessous pour illustrer la commande grep.

$ cat demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.

Two lines above this line is empty.
And this is the last line.

1. Rechercher la chaîne donnée dans un seul fichier

L'utilisation de base de la commande grep consiste à rechercher une chaîne spécifique dans le fichier spécifié, comme indiqué ci-dessous.

Syntax:
grep "literal_string" filename

$ grep "this" demo_file
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

2. Recherche de la chaîne donnée dans plusieurs fichiers.

Syntax:
grep "string" FILE_PATTERN


Il s'agit également d'une utilisation de base de la commande grep. Pour cet exemple, copions le demo_file dans demo_file1. La sortie grep inclura également le nom du fichier devant la ligne correspondant au modèle spécifique, comme indiqué ci-dessous. Lorsque le shell Linux voit le méta-caractère, il effectue l'expansion et donne tous les fichiers en entrée à grep.

$ cp demo_file demo_file1

$ grep "this" demo_*
demo_file:this line is the 1st lower case line in this file.
demo_file:Two lines above this line is empty.
demo_file:And this is the last line.
demo_file1:this line is the 1st lower case line in this file.
demo_file1:Two lines above this line is empty.
demo_file1:And this is the last line.

3. Recherche insensible à la casse avec grep -i

Syntax:
grep -i "string" FILE


C'est aussi une utilisation de base de grep. Ceci recherche la casse de chaîne/motif donnée de manière insensible. Ainsi, il correspond à tous les mots tels que "le", "LE" et "Le" cas insensible comme indiqué ci-dessous.

$ grep -i "the" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
And this is the last line.

4. Faire correspondre l'expression régulière dans les fichiers

Syntax:
grep "REGEX" filename


Il s'agit d'une fonctionnalité très puissante, si vous pouvez utiliser efficacement les expressions régulières. Dans l'exemple suivant, il recherche tout le motif qui commence par "lignes" et se termine par "vide" avec tout ce qui se trouve entre les deux. c'est-à-dire pour rechercher des "lignes [quelque chose entre] vides" dans le demo_file.

$ grep "lines.*empty" demo_file
Two lines above this line is empty.

D'après la documentation de grep :une expression régulière peut être suivie par l'un des nombreux opérateurs de répétition :

  •  ? L'élément précédent est facultatif et correspond au plus une fois.
  • * L'élément précédent sera mis en correspondance zéro ou plusieurs fois.
  • + L'élément précédent sera mis en correspondance une ou plusieurs fois.
  • {n} L'élément précédent correspond exactement n fois.
  • {n,} L'élément précédent est mis en correspondance n fois ou plus.
  • {,m} L'élément précédent est mis en correspondance au plus m fois.
  • {n,m} L'élément précédent est mis en correspondance au moins n fois, mais pas plus de m fois.

5. Vérification des mots complets, pas des sous-chaînes à l'aide de grep -w

Si vous souhaitez rechercher un mot et éviter qu'il ne corresponde aux sous-chaînes, utilisez l'option -w. Une simple recherche normale affichera toutes les lignes.

L'exemple suivant est le grep normal où il recherche "est". Lorsque vous recherchez "est", sans aucune option, il affichera "est", "son", "ceci" et tout ce qui a la sous-chaîne "est".

$ grep -i "is" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
This Line Has All Its First Character Of The Word With Upper Case.
Two lines above this line is empty.
And this is the last line.


L'exemple suivant est le grep WORD où il recherche uniquement le mot "est". Veuillez noter que cette sortie ne contient pas la ligne "Cette ligne a tout son premier caractère du mot avec majuscule", même si "est" est là dans le "Ceci", car ce qui suit ne recherche que le mot "est " et non pour " ceci ".

$ grep -iw "is" demo_file
THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

6. Afficher les lignes avant/après/autour du match en utilisant grep -A, -B et -C

Lorsque vous faites un grep sur un gros fichier, il peut être utile de voir quelques lignes après le match. Vous pourriez vous sentir utile si grep peut vous montrer non seulement les lignes correspondantes, mais aussi les lignes après/avant/autour de la correspondance.


Veuillez créer le fichier demo_text suivant pour cet exemple.

$ cat demo_text
4. Vim Word Navigation

You may want to do several navigation in relation to the words, such as:

 * e - go to the end of the current word.
 * E - go to the end of the current WORD.
 * b - go to the previous (before) word.
 * B - go to the previous (before) WORD.
 * w - go to the next word.
 * W - go to the next WORD.

WORD - WORD consists of a sequence of non-blank characters, separated with white space.
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

 * 192.168.1.1 - single WORD
 * 192.168.1.1 - seven words.

6.1 Afficher N lignes après correspondance

-A est l'option qui imprime les N lignes spécifiées après la correspondance, comme indiqué ci-dessous.

Syntax:
grep -A <N> "string" FILENAME


L'exemple suivant imprime la ligne correspondante, ainsi que les 3 lignes qui la suivent.

$ grep -A 3 -i "example" demo_text
Example to show the difference between WORD and word

* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

6.2 Afficher N lignes avant match

-B est l'option qui imprime les N lignes spécifiées avant la correspondance.

Syntax:
grep -B <N> "string" FILENAME


Lorsque vous aviez l'option d'afficher les N lignes après correspondance, vous avez l'option -B pour le contraire.

$ grep -B 2 "single WORD" demo_text
Example to show the difference between WORD and word

* 192.168.1.1 - single WORD

6.3 Afficher N lignes autour de correspondance

-C est l'option qui imprime les N lignes spécifiées avant la correspondance. Dans certaines occasions, vous voudrez peut-être que le match apparaisse avec les lignes des deux côtés. Cette option affiche N lignes à la fois du côté (avant et après) du match.

$ grep -C 2 "Example" demo_text
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

* 192.168.1.1 - single WORD

7. Mise en surbrillance de la recherche à l'aide de GREP_OPTIONS

Comme grep imprime les lignes du fichier selon le motif/chaîne que vous avez donné, si vous voulez qu'il mette en évidence la partie qui correspond à la ligne, vous devez suivre la méthode suivante.

Lorsque vous effectuez l'exportation suivante, vous obtenez la mise en surbrillance des recherches correspondantes. Dans l'exemple suivant, tout cela sera mis en évidence lorsque vous définirez la variable d'environnement GREP_OPTIONS comme indiqué ci-dessous.

$ export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'

$ grep this demo_file
this line is the 1st lower case line in this file.
Two lines above this line is empty.
And this is the last line.

8. Recherche dans tous les fichiers de manière récursive à l'aide de grep -r

Lorsque vous souhaitez rechercher dans tous les fichiers du répertoire courant et de son sous-répertoire. L'option -r est celle que vous devez utiliser. L'exemple suivant recherchera la chaîne "ramesh" dans tous les fichiers du répertoire courant et de tous ses sous-répertoires.

$ grep -r "ramesh" *

9. Inverser la correspondance en utilisant grep -v

Vous aviez différentes options pour afficher les lignes correspondantes, pour afficher les lignes avant la correspondance, pour afficher les lignes après la correspondance et pour mettre en surbrillance la correspondance. Donc, certainement, vous voudriez aussi que l'option -v fasse une correspondance inversée.

Lorsque vous souhaitez afficher les lignes qui ne correspondent pas à la chaîne/motif donné, utilisez l'option -v comme indiqué ci-dessous. Cet exemple affichera toutes les lignes qui ne correspondent pas au mot "go".

$ grep -v "go" demo_text
4. Vim Word Navigation

You may want to do several navigation in relation to the words, such as:

WORD - WORD consists of a sequence of non-blank characters, separated with white space.
word - word consists of a sequence of letters, digits and underscores.

Example to show the difference between WORD and word

* 192.168.1.1 - single WORD
* 192.168.1.1 - seven words.

10. affiche les lignes qui ne correspondent pas à tout le motif donné.

Syntax:
grep -v -e "pattern" -e "pattern"

$ cat test-file.txt
a
b
c
d

$ grep -v -e "a" -e "b" -e "c" test-file.txt
d

11. Compter le nombre de correspondances à l'aide de grep -c

Lorsque vous voulez compter le nombre de lignes correspondant au modèle/chaîne donné, utilisez l'option -c.

Syntax:
grep -c "pattern" filename

$ grep -c "go" demo_text
6


Lorsque vous voulez, découvrez combien de lignes correspondent au motif

$ grep -c this demo_file
3


Quand vous voulez savoir combien de lignes ne correspondent pas au motif

$ grep -v -c this demo_file
4

12. Afficher uniquement les noms de fichiers qui correspondent au modèle donné en utilisant grep -l

Si vous souhaitez que grep n'affiche que les noms de fichiers correspondant au modèle donné, utilisez l'option -l (L minuscule).

Lorsque vous donnez plusieurs fichiers au grep en entrée, il affiche les noms de fichiers contenant le texte correspondant au modèle, ce qui sera très pratique lorsque vous essayez de trouver des notes dans toute votre structure de répertoires.

$ grep -l this demo_*
demo_file
demo_file1

13. Afficher uniquement la chaîne correspondante

Par défaut, grep affichera la ligne qui correspond au motif/chaîne donné, mais si vous voulez que grep n'affiche que la chaîne correspondante du motif, utilisez l'option -o.

Ce n'est peut-être pas très utile lorsque vous donnez la corde directement. Mais cela devient très utile lorsque vous donnez un motif regex et essayez de voir à quoi il correspond

$ grep -o "is.*line" demo_file
is line is the 1st lower case line
is line
is is the last line

14. Afficher la position de la correspondance dans la ligne

Lorsque vous voulez que grep affiche la position où il correspond au modèle dans le fichier, utilisez les options suivantes comme

Syntax:
grep -o -b "pattern" file

$ cat temp-file.txt
12345
12345

$ grep -o -b "3" temp-file.txt
2:3
8:3


Remarque : La sortie de la commande grep ci-dessus n'est pas la position dans la ligne, c'est le décalage d'octet de l'ensemble du fichier.

15. Afficher le numéro de ligne lors de l'affichage de la sortie à l'aide de grep -n

Pour afficher le numéro de ligne du fichier avec la ligne correspondante. Il effectue une numérotation de ligne basée sur 1 pour chaque fichier. Utilisez l'option -n pour utiliser cette fonctionnalité.

$ grep -n "go" demo_text
5: * e - go to the end of the current word.
6: * E - go to the end of the current WORD.
7: * b - go to the previous (before) word.
8: * B - go to the previous (before) WORD.
9: * w - go to the next word.
10: * W - go to the next WORD.

Tutoriels Grep supplémentaires

  • 7 exemples d'opérateurs Linux Grep OR, Grep AND, Grep NOT
  • Expressions régulières dans la commande Grep avec 10 exemples – Partie I
  • Expressions régulières avancées dans la commande Grep avec 10 exemples – Partie II
  • Recherche dans un fichier *.bz2 à l'aide de bzgrep et dans un fichier *.gz à l'aide de zgrep

Des articles Linux géniaux

Voici quelques exemples impressionnants de 15 articles qui pourraient vous être utiles.

  • Linux Crontab :15 exemples de tâches Cron impressionnants
  • Maman, je l'ai trouvé ! - 15 exemples pratiques de commande de recherche Linux
  • 15 exemples pour maîtriser l'historique de la ligne de commande Linux
  • Commande LS Unix :15 exemples pratiques

Linux
  1. Commande cp sous Linux :7 exemples pratiques

  2. Commande d'arrêt de Linux :5 exemples pratiques

  3. 5 exemples pratiques de la commande dd sous Linux

  4. UNIX / Linux :10 exemples de commandes Netstat

  5. 10 exemples de commandes Xargs sous Linux / UNIX

5 exemples pratiques de la commande Tail sous Linux

commande echo sous Linux :7 exemples pratiques

Commande Grep sous Linux (avec exemples)

Commande Grep sous Linux/UNIX

Commande Ping pratique dans des exemples Linux

UNIX / Linux :7 exemples pratiques de commandes PS pour la surveillance des processus