L’un des outils de recherche renommés sur des systèmes de type UNIX pouvant être utilisé pour rechercher n’importe quoi que ce soit un fichier ou une ligne ou plusieurs lignes dans le fichier est l’utilitaire Grep.
Il est très vaste dans la fonctionnalité qui peut être attribuée au grand nombre d’options qu’il prend en charge : la recherche à l’aide de modèle de chaîne ou de modèle REG-EX ou de REG-EX à base de PERL, etc.
Mais vous avez pu remarquer qu’il existe de nombreuses déclinaisons comme grep, egrep, fgrep et même regrep.
Pourquoi tout ces versions de grep et surtout quelles sont les différences ?
Dans ce tutoriel, je vous explique toutes les différences entre grep, egrep, fgrep, rgrep.
Qu’est-ce que grep
Grep est une utilitaire de ligne de commande dans les systèmes UNIX et Linux. Il est utilisé pour trouver des modèles de recherche dans le contenu d’un fichier donné.
Le nom vient de Global Regular Expression (Processor |
Parser |
Printer).
Il s’agit de la version standard de Grep conçue pour rechercher des modèles en utilisant des expressions de base régulières. L’utilisation de GREP nécessite une échappement de métacaractères pour produire le comportement attendu.
Comme le montre la capture d’écran ci-dessous, le résultat de grep est différent si vous encadrez les métacaractères.
grep "(e|f)grep" grep.txt
(e|f)grep
grep "\(e\|f\)grep" grep.txt
Ceci est un test pour grep, egrep, fgrep, rgrep
Qu’est-ce que egrep
egrep est une autre version de grep.
Le E à egrep signifie extended regex pour utiliser les regex étendus.
On peut donc aussi le nommer extended grep.
Par défaut, la commande Grep fonctionne avec des expressions régulières de base. Si vous souhaitez une recherche plus complexe, vous devez utiliser les regex étendus.
La commande egrep permet d’utiliser de regex étendue.
Ainsi il traite des métacaractères tel quel et ne les substitue pas comme des caractères comme dans Grep, et vous êtes donc libéré du fardeau de les échapper comme à Grep. Il utilise ERE (Extended Regular Expression set) soit ‘ensemble d’expression régulier étendu.
De ce fait, pour effectuer une recherche avec des expressions régulières, vous n’avez pas besoin d’échapper les métacaractères.
egrep "(e|f)grep" grep.txt
Ceci est un test pour grep, egrep, fgrep, rgrep
egrep "\(e\|f\)grep" grep.txt
(e|f)grep
Qu’est-ce que fgrep
Voici une troisième version de la commande grep : fgrep.
Le F à fgrep signifie fixe et ne permet pas l’utilisation d’expression régulière.
Ainsi, elle ne reconnaît pas les expressions régulières, ni aucun métacaractères.
D’autre part fonctionne sur une chaîne fixe au lieu d’une regex et donc il est plus rapide.
Ci-dessous, on peut voir que même en encadrant les métacaractères fgrep ne trouve rien car il ne gère pas les expressions régulières.
fgrep "(e|f)grep" grep.txt
(e|f)grep
fgrep "\(e\|f\)grep" grep.txt
Q’est-ce que rgrep
rgrep lit tous les fichiers sous chaque répertoire, récursivement, suivant des liens symboliques uniquement s’ils sont sur la ligne de commande.
De ce fait le nom donné est Recursive GREP.
grep, egrep, fgrep, rgrep : Quelles sont les différences
Bien que vous puissiez continuer à utiliser egrep, rgrep et fgrep, leur statut est obsolète (deprecated). De nombreux systèmes incluent toujours les fichiers binaires pour ces variantes.
Cependant, la norme POSIX indiquer d’utiliser la commande standard grep avec des options spéciaux (-E, -r ou -F).
Ces drapeaux de la commande grep émuler la fonctionnalité de chaque commande respective et vont remplacer à therme chacun des programmes.
Pour résumer :
- egrep et fgrep sont des commandes obsolètes et doivent être évitées
- egrep équivaut à la commande grep -E et permet d’utiliser une regex étendue
- fgrep est équivalent à la commande grep -F et utilise une chaîne fixe pour la recherche et il effectue donc une recherche plus rapide
- Enfin rgrep est un équivalent de la commande grep -r
Paramètres de comparaison | egrep (grep -E) | Fgrep (grep -F) |
Fonctionnement | egrep prend son entrée de l’entrée standard, qui peut être réalisée en pipant le contenu d’un fichier à travers elle. | fgrep prend son entrée à partir d’un fichier qui doit être spécifié dans un argument de ligne de commande. |
Expressions régulières | egrep emploie des expressions régulières étendues. | fgrep emploie des expressions régulières non étendues. |
Vitesse | Vitesse lente. | La plus haute vitesse. |
Modes | Il explore une chaîne ou une liste qui accumule plusieurs modes. | Il n’explore pas de chaîne ou de liste qui accumule plusieurs modes. |
Illustration | $ egrep -E “5|[[:space:]]*5” ./file.txt. | $ fgrep -F “5|[[:space:]]*5” ./file.txt. |
Liens
- 12 exemples pour utiliser la commande cat sur Linux
- 6 exemples pour utiliser la commande tail sur Linux
- Comment utiliser la commande less sur Linux avec des exemples
- La commande cut de Linux : utilisation et exemples
- Comment utiliser la commande AWK avec des exemples
- Commande sed : utilisation et exemples
- 12 exemples de commandes grep sur Linux
- La commande TR : utilisations et exemples
- La commande echo : utilisations et exemples
- La commande sort Linux : utilisations et exemples
- La commande join Linux : utilisations et exemples
L’article grep, egrep, fgrep, rgrep : Quelles sont les différences est apparu en premier sur malekal.com.
0 Commentaires