GNU/Linux >> Tutoriels Linux >  >> Linux

Expliqué! La différence entre les commandes grep, egrep et fgrep

Je pense que vous connaissez déjà la commande grep. Il peut arriver que vous rencontriez des termes comme egrep et fgrep dans une discussion sur un forum Internet et je me demande quelles sont ces commandes et si elles sont liées à grep.

Dans ce didacticiel, je vais discuter de ces variantes de grep en expliquant la différence et les similitudes.

Qu'est-ce que egrep et fgrep ? Quelle est la différence entre grep, egrep et fgrep ?

Le e dans egrep signifie étendu et le f dans fgrep signifie fixe. egrep permet l'utilisation de regex étendues et fgrep n'autorise pas du tout les regex.

Tout cela prendra plus de sens bientôt quand je les expliquerai avec des exemples.

Vous savez que grep fonctionne sur regex. Mais ce n'est pas toute la vérité.

Par défaut, la commande grep fonctionne sur les expressions régulières de base. Si vous voulez une recherche plus complexe, vous devez utiliser une expression régulière étendue. Voir la différence entre les expressions régulières de base et étendues.

La commande egrep permet l'utilisation d'expressions régulières étendues.

La commande fgrep, quant à elle, fonctionne sur une chaîne fixe au lieu d'une expression régulière. Cela signifie qu'il prend le modèle de recherche tel qu'il est pour la recherche et qu'il est donc plus rapide que grep.

Cependant, vous pouvez toujours voir egrep et fgrep dans la nature, leur statut est obsolète. De nombreux systèmes incluent encore les binaires pour ces variantes.

Cependant, c'est maintenant la norme POSIX d'utiliser grep standard avec des drapeaux d'option spéciaux (-E ou -F ). Ces drapeaux aident grep standard à émuler la fonctionnalité de chaque commande respective.

Pour résumer :

  • egrep et fgrep sont des commandes obsolètes et doivent être évitées.
  • egrep est équivalent à grep -E et permet l'utilisation d'expressions régulières étendues.
  • fgrep est équivalent à grep -F commande et il utilise une chaîne fixe pour la recherche et donc il effectue une recherche plus rapide.

Comprendre la différence entre grep, egrep et fgrep avec un exemple

J'ai créé un court fichier texte pour montrer les différences entre ces variantes de grep.

[email protected]:~$ cat test.txt 
this is a tasty test

Commande grep standard

Il s'agit de la version standard de grep conçue pour rechercher des modèles à l'aide d'expressions régulières de base. L'utilisation de grep nécessite l'échappement des méta-caractères pour générer le comportement attendu.

Supposons que je veuille rechercher soit tast ou test . Voici ce que je peux utiliser :

[email protected]:~$ grep 't\(a\|e\)st' test.txt

Remarquez comment vous devez échapper à la parenthèse ? C'est beaucoup plus facile à regarder et à comprendre avec l'expression régulière étendue.

Grep étendu :Egrep ou grep -E

Egrep a été créé pour fournir étendu prise en charge des méta-caractères. Cela signifie qu'il échappe ces caractères spéciaux par défaut. Cela permet de gagner du temps et facilite généralement la lecture des expressions.

La commande que j'ai utilisée ci-dessus peut être réécrite comme beaucoup plus lisible :

[email protected]:~$ egrep 't(a|e)st' test.txt

Le binaire egrep ne prend pas systématiquement en charge le { personnage. Cela peut entraîner des comportements inattendus.

Certaines versions d'egrep permettent de les interpréter correctement comme des caractères littéraux s'ils sont échappés (\{ ). Cependant, la meilleure pratique pour faire correspondre un { littéral est de mettre entre crochets [{] .

Grep fixe :Fgrep ou grep -F

Les professionnels du logiciel savent que même si la capacité de calcul a considérablement augmenté, l'optimisation ne peut jamais être ignorée. Grep est un outil très puissant, mais il peut parfois utiliser inutilement des ressources système.

C'est de là que vient l'idée de grep fixe. Ce logiciel est idéal pour les cas d'utilisation où vous devez faire correspondre une chaîne exacte.

Il ne dispose pas des puissants outils d'expression des autres variantes de grep. Cette faiblesse est en fait son super pouvoir. Cela rend l'outil beaucoup plus rapide.

Comme je l'ai mentionné précédemment, vous devez éviter d'utiliser egrep et fgrep car ce sont des commandes obsolètes. Utilisation de grep -E et grep -F est la voie à suivre.

J'espère que vous avez maintenant une meilleure compréhension de grep, egrep et fgrep. Si vous avez quelque chose à ajouter, n'hésitez pas à laisser un commentaire.


Linux
  1. Quelle est la différence entre InnoDB et MyISAM ?

  2. La différence entre les commandes d'arrêt et d'arrêt ?

  3. La Différence Entre [[ $a ==Z* ]] Et [ $a ==Z* ] ?

  4. La Différence Entre Nss Et Pam?

  5. Différence entre ${} et $() dans Bash

La différence entre sudo et su expliquée

Quelle est la différence entre Linux et Unix ?

La différence entre plus, moins et la plupart des commandes

Différence entre apt et apt-get expliquée

Quelle est la différence entre les commandes kill et killall ?

Quelle est la différence entre unlink et rm ?