Quand utiliser egrep au lieu de grep?

8

Je me prépare pour une évaluation de terminal Linux maintenant, j'ai essayé de Google et j'ai trouvé que la plupart des ressources se réfèrent au "grep" de base plutôt qu'au "egrep" plus puissant - enfin, c'est du moins ce que le professeur a dit en cours.

Je travaille toujours avec de petits échantillons, donc l'optimisation des performances est une chose trop éloignée.

Donc, fondamentalement, j'aimerais savoir s'il y a des domaines dans lesquels je dois passer à egrep pour le faire d'une meilleure manière? Est-il sûr de travailler avec "grep" de base pour l'instant? y aura-t-il des risques potentiels?

Désolé pour ma connaissance limitée des commandes du shell Linux, la page de manuel me ressemble à un labyrinthe et honnêtement, je n'ai pas mis beaucoup de temps à comprendre toutes les fonctionnalités fournies par les deux commandes.

Michael Mao
la source

Réponses:

10

egrep = grep -E

Sur http://www.opengroup.org/onlinepubs/007908799/xcu/grep.html

"Correspondance à l'aide d'expressions régulières étendues. Traitez chaque modèle spécifié comme un ERE, comme décrit dans la spécification XBD, Expressions régulières étendues. Si un modèle ERE entier correspond à une ligne d'entrée, la ligne sera mise en correspondance. Un ERE nul correspond à chaque ligne."

Donc, avec egrep, vous pouvez utiliser +, ?, | and ().

Ben
la source
@omfgroflmao: est-ce là toute la différence? eh bien, maintenant je me sens à l'aise de me concentrer uniquement sur les tutoriels "grep" sans vous soucier de la commande "egrep" :) Merci pour votre conseil!
1
Que vous l'appeliez egrepou que grep -Eles expressions régulières étendues rendent généralement les modèles complexes plus courts et donc plus faciles à lire en supprimant beaucoup de ``. Ce n'est pas une question de performance, mais c'est une meilleure façon dans un certain sens.
Cascabel
5

egrep est obsolète. Utilisez grep -E. Notez que greptrouve des modèles de chaîne pour vous. Si vous voulez faire quelque chose à vos chaînes après les avoir trouvées, vous devez diriger vers un outil de traitement de chaîne tel que awk(ou le shell). L'outil que vous devriez également étudier est awk, car il awktrouve également des chaînes pour vous grepet effectue le traitement pour vous si vous en avez besoin. Il a tout ce que font grep / sed / etc dans un seul outil pratique.

user31894
la source
@ ghostdog74: ahhh, donc egrep est recommandé de ne pas être utilisé ... Je pensais que c'était le remplacement de grep ... Merci pour votre conseil!
2
Pour mémoire, sur de nombreuses machines, la mienne incluse, egrep est un lien vers grep. Autrement dit, ils sont en fait la même commande exacte, mais se comportent différemment selon la façon dont vous les appelez.
MJB