Quelle est la différence entre Grep, Egrep et Fgrep dans Linux?

Quelle est la différence entre Grep, Egrep et Fgrep dans Linux?

L'un des outils de recherche renommés sur les systèmes de type UNIX qui peuvent être utilisés pour rechercher quoi que ce soit, qu'il s'agisse d'un fichier, ou d'une ligne ou de plusieurs lignes dans le fichier est un 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 comme: la recherche à l'aide du modèle de chaîne, ou du modèle Reg-EX ou Reg-EX basé sur Perl, etc.

Différence entre Grep, Egrep et Fgrep dans Linux

En raison de ses fonctionnalités variables, il a de nombreuses variantes grep, faire un coup de pouce (Grep prolongé), fgrep (Grep fixe), pgrep (Processus grep), rgrep (Grep récursif) etc. Mais ces variantes ont des différences mineures à l'original grep qui les a rendus populaires et à utiliser par divers programmeurs Linux pour des tâches spécifiques.

La principale chose qui reste à étudier est quelles sont les différences entre les trois principales variantes I.e. 'grep', 'Egrep' et 'fgrep' de Grep qui fait que les utilisateurs de Linux choisissent une ou l'autre version selon l'exigence.

Quelques méta-personnages spéciaux de Grep

  1. + - Équivalent à une ou plusieurs occurrences de caractère précédent.
  2. ? - Cela désigne près d'une répétition du caractère précédent. Comme: un? Correspondait 'un' ou 'Aa'.
  3. ( - Début de l'expression de l'alternance.
  4. ) - Fin de l'expression de l'alternance.
  5. | - Correspondant à l'une ou l'autre de l'expression séparée par '|'. Comme: «(A | b) cde» correspondait à l'un ou l'autre 'ABCDE' ou 'bbcde'.
  6. - Cette méta-personnage indique le début du spécificateur. Comme: "A 2" allumettes "AA" Dans le fichier I.e. 2 fois.
  7. - Cette méta-personnage indique le spécificateur de fin de plage.

Différences entre Grep, Egrep et Fgrep

Quelques principales différences entre grep, faire un coup de pouce et fgrep peut être mis en évidence comme suit. Pour cet ensemble d'exemples, nous supposons le fichier sur lequel l'opération est effectuée pour être:

Commande grep Linux

Commande grep

grep ou Impression d'expression régulière globale est le programme de recherche principal sur les systèmes de type UNIX qui peuvent rechercher n'importe quel type de chaîne sur n'importe quel fichier ou liste de fichiers ou même la sortie de n'importe quelle commande.

Lire suggérée: 12 exemples pratiques de la commande grep Linux

Il utilise Expressions régulières de base En dehors des chaînes normales comme modèle de recherche. Dans les expressions régulières de base (BRE), des méta-caractères comme: '', '','(', ')','|','+','?' perdre leur sens et sont traités comme des caractères normaux de corde et doivent être échappés s'ils doivent être traités comme des caractères spéciaux.

Lire suggérée: 11 Commandes d'avance «grep» sur les classes de caractères et les expressions de support

De plus, Grep utilise l'algorithme de Boyer-Moore pour la recherche rapide de toute chaîne ou expression régulière.

$ grep -c 0 '(f | g) ile' check_file $ grep -c 0 '\ (f \ | g \) ile' check_file 
Exemple de commande Linux Grep

Comme ici, quand la commande est exécutée sans s'échapper '(")' et '|' Ensuite, il a recherché la chaîne complète I.e. «(F | g) ile» dans le fichier. Mais lorsque les caractères spéciaux ont été échappés, au lieu de les traiter comme faisant partie de String, Grep les a traités comme des méta-personnages et a recherché des mots "déposer" ou "Gile" dans le fichier.

Commande egrep

Faire un coup de pouce ou grep -E est une autre version de Grep ou du grep étendu. Cette version de Grep est efficace et rapide lorsqu'il s'agit de rechercher un modèle d'expression régulière car il traite les méta-personnages tels quels et ne les substituent pas comme des cordes comme dans Grep, et donc vous êtes libéré du fardeau de les échapper en tant que les échappements en tant que car en grep. Il utilise ere ou l'ensemble d'expression régulière étendu.

Dans le cas d'Egrep, même si vous n'échappez pas aux méta-caracters, cela les traiterait comme des caractères spéciaux et les remplacerait par leur sens spécial au lieu de les traiter comme faisant partie de la chaîne.

$ egrep -c 0 '(f | g) ile' check_file $ egrep -c 0 '\ (f \ | g \) ile' check_file 
Exemples de commande Linux Egrep

Comme ici, faire un coup de pouce recherché "déposer" chaîne lorsque les méta-personnages n'ont pas été échappés comme cela signifierait par le sens de ces caractères. Mais, lorsque ces caractères ont été échappés, alors Egrep les a traités comme faisant partie de String et a recherché une chaîne complète «(F | g) ile» dans le fichier.

commande fgrep

Fgrep ou la Grep fixe ou grep -f est encore une autre version de Grep qui est rapide dans la recherche en ce qui concerne la recherche de la chaîne entière au lieu de l'expression régulière car elle ne reconnaît pas les expressions régulières, ni aucun méta-personnage. Pour rechercher une chaîne directe, c'est la version de Grep qui doit être sélectionnée.

FGREP recherche une chaîne complète et ne reconnaît même pas les caractères spéciaux comme faisant partie de l'expression régulière même s'il s'est échappé ou non échappé.

$ fgrep -c 0 '(f | g) ile' check_file $ fgrep -c 0 '\ (f \ | g \) ile' check_file 
Exemples de commande Linux Fgrep

Par exemple, lorsque les méta-caractéristiques n'ont pas été échappées, Fgrep a recherché la chaîne complète «(F | g) ile» dans le fichier, et lorsque les méta-personnages ont été échappés, la commande fgrep a recherché «\ (F \ | g \) ile» Tous les caractères tels quels dans le fichier.

Nous avons déjà couvert quelques exemples pratiques de commande grep que vous pouvez les lire ici, si vous voulez en tirer le meilleur parti de la commande grep dans Linux.

Apprenez 12 exemples pratiques de la commande grep Linux

Conclusion

Ci-dessus mis en évidence sont les différences entre 'grep', 'Egrep' et 'fgrep'. Outre la différence dans l'ensemble des expressions régulières utilisées et la vitesse d'exécution, les paramètres de ligne de commande REST restent les mêmes pour les trois versions de Grep et même au lieu de «Egrep» ou «Fgrep», «grep -e» ou «grep - F ”sont recommandés pour être utilisés.

Si vous trouvez d'autres différences entre ces trois versions de Grep, mentionnez-les dans vos commentaires.