Tutoriel de commande Grep - Comment rechercher un fichier sous Linux et Unix avec la recherche récursive

grepsignifie Recherche mondiale d'expression régulière et impression . Il s'agit d'un outil de ligne de commande utilisé dans les systèmes UNIX et Linux pour rechercher un modèle spécifié dans un fichier ou un groupe de fichiers.

grepest livré avec de nombreuses options qui nous permettent d'effectuer diverses actions liées à la recherche sur les fichiers. Dans cet article, nous verrons comment utiliser greples options disponibles ainsi que les expressions régulières de base pour rechercher des fichiers.

Comment utiliser grep

Sans passer aucune option, greppeut être utilisé pour rechercher un modèle dans un fichier ou un groupe de fichiers. La syntaxe est:

grep ''  

Notez que des guillemets simples ou doubles sont obligatoires autour du texte s'il contient plus d'un mot.

Vous pouvez également utiliser le caractère générique (*) pour sélectionner tous les fichiers d'un répertoire.

Le résultat de ceci est les occurrences du motif (par la ligne où il est trouvé) dans le (s) fichier (s). S'il n'y a pas de correspondance, aucune sortie ne sera imprimée sur le terminal.

Par exemple, disons que nous avons les fichiers suivants (appelés grep.txt):

Hello, how are you I am grep Nice to meet you 

La grepcommande suivante recherchera toutes les occurrences du mot «vous»:

grep you grep.txt 

Le résultat pour cela est:

Hello, how are you Nice to meet you 

you devrait avoir une couleur différente de celle de l'autre texte pour identifier facilement ce qui a été recherché.

Mais grepvient avec plus d'options qui nous aident à obtenir plus lors d'une opération de recherche. Examinons neuf d'entre eux tout en les appliquant à l'exemple ci-dessus.

Options utilisées avec grep

1. -n(--line-number) - liste les numéros de ligne

Cela imprime les correspondances pour le texte avec les numéros de ligne. Si vous regardez le résultat ci-dessus, vous remarquerez qu'il n'y a pas de numéros de ligne, juste les correspondances.

grep you grep.txt -n 

Résultat:

1: Hello, how are you 3: Nice to meet you 

2. -c(--count) - imprime le nombre de lignes de correspondances

grep you grep.txt -c 

Résultat:

2 

Notez que s'il y avait un autre «vous» sur la première ligne, l'option -cimprimerait toujours 2. C'est parce qu'elle concerne le nombre de lignes où les correspondances apparaissent, pas le nombre de correspondances.

3. -v(--invert-match) - imprime les lignes qui ne correspondent pas au modèle spécifié

grep you grep.txt -v -n 

Résultat:

2. I am grep 

Remarquez que nous avons également utilisé l'option -n? Oui, vous pouvez appliquer plusieurs options en une seule commande.

4. -i(--ignore-case) - utilisé pour l'insensibilité à la casse

# command 1 grep You grep.txt # command 2 grep YoU grep.txt -i 

Résultats:

# result 1 # no result # result 2 Hello, how are you Nice to meet you 

5. -l(--files-with-matches) - affiche les noms de fichiers qui correspondent à un modèle

# command 1 grep you grep.txt -l # command 2 grep You grep.txt -i -l 

Résultats:

# result 1 grep.txt # result 2 # all files in the current directory that matches # the text 'You' case insensitively 
#### 6. `-w` (--word-regexp) - print matches of the whole word 

Par défaut, grepcorrespond aux chaînes contenant le modèle spécifié. Cela signifie que cela grep yo grep.txtaffichera les mêmes résultats que grep yo grep.txtparce que «yo» peut être trouvé en vous. De même, «ou».

Avec l'option -w, grepgarantit que les correspondances sont exactement le même modèle que celui spécifié. Exemple:

grep yo grep.txt -w 

Résultat:

Pas de résultat!

7. -o(--only-matching) - n'imprime que le motif correspondant

Par défaut, grepimprime la ligne où se trouve le motif correspondant. Avec l'option -o, seul le motif correspondant est imprimé ligne par ligne. Exemple:

grep yo grep.txt -o 

Résultat:

yo 

8. -A(--after-context) et -B(--before-context) - impriment les lignes après et avant (respectivement) le motif correspondant

grep grep grep.txt -A 1 -B 1 

Résultat:

Hello, how are you I am grep Nice to meet you 

Ce modèle correspondant est sur la ligne 2. -A 1signifie une ligne après la ligne correspondante et -B 1signifie une ligne avant la ligne correspondante.

Il existe également une -Coption (--context) qui est égale à -A+ -B. La valeur transmise à -Cserait utilisée pour -Aet -B.

9. -R(--dereference-recursive) - recherche récursive

Par défaut, grepimpossible de rechercher des répertoires. Si vous essayez de le faire, vous obtiendrez une erreur ("Est un répertoire"). Avec l'option -R, la recherche de fichiers dans les répertoires et sous-répertoires devient possible. Exemple:

grep you . 

Résultat:

# 'you' matches in a folders # and files starting from the # current directory 

Expressions régulières pour les modèles

grepautorise également les expressions régulières de base pour spécifier des modèles. Deux d'entre eux sont:

1. ^pattern- début de ligne

Ce modèle signifie que le grepcorrespondra aux chaînes dont les lignes commencent par la chaîne spécifiée après ^. Exemple:

grep ^I grep.txt -n 

Résultat:

2: I 

2. pattern$- fin de ligne

Contrairement à ^, $spécifie les modèles qui seront mis en correspondance si la ligne se termine par la chaîne précédente $. Exemple:

grep you$ grep.txt 

Résultat:

1: Hello, how are you 3: Nice to meet you 

Emballer

grepest un outil puissant pour rechercher des fichiers dans le terminal. Comprendre comment l'utiliser vous permet de trouver facilement des fichiers via le terminal.

Il y a plus d'options attachées à cet outil. Vous pouvez trouver avec man grep.