Différence entre egrep et grep
J'ai une question à propos de grep
et egrep
dans unix
.
Que je suis récemment l'étude de la shell commands
dans unix
, je veux savoir quelles sont les différences entre grep et egrep.
Je trouve que nous pouvons utiliser grep et egrep avec expression régulière. Cependant, j'ai trouvé quelque chose de différent entre ces deux commandes:
Pour ^
, grep et egrep ont le même sens qui est de trouver les lignes qui contiennent le fourre au tout début.
Cependant, pour |
, grep, sans barre oblique inverse devant |
, signifie le caractère de |
, et si j'ai mis une barre oblique inverse devant elle, elle tourne sur elle une signification spéciale de trouver la ligne qui contient les choses en face et derrière elle. MAIS, pour egrep, c'est le contraire. |
a le dernier sens de grep et \|
a l'ancien sens de grep quand il utilise.
Quelqu'un d'autre pourrait m'expliquer pourquoi?
Vous devez vous connecter pour publier un commentaire.
Oui, je pourrais.
La
egrep
de commande est un raccourci pourgrep
binaire, mais avec une exception, lorsquegrep
est invoqué commeegrep
lagrep
binaire active à sa logique interne, comme il le serait appelé commegrep -E
.La différence est que
-E
option permet l'utilisation de la prolongation de la regexp modèles. Il vous permettra à l'aide de ces méta-symboles+
,?
ou|
. Ils ne sont pas ordinale des personnages comme nous avons l'habitude d'avoir dans les mots ou les noms des fichiers, mais les commandes de contrôle pourgrep
binaire lui-même. Ainsi,|
moyens OU logique.Ainsi, par exemple, vous souhaitez afficher la liste des fichiers dans le répertoire et de ne voir que ceux qui contient "mp4" ou "avi" extensions. Avec
egrep
que vous allez faire:ls | egrep "mp4|avi"
Dans cet exemple
|
agit comme OU de commande, il va récupérer à la sortie dels
tous les noms qui contiennent soit "mp4" ou "avi" les chaînes. Si vous l'exécutez avec la plainegrep
commande, vous n'obtiendrez rien, parce quegrep
ne sais pas une telle chose comme|
de la commande de recherche pour "mp4|avi" ensemble de la chaîne de texte (avec pipe symbole). E. g. si vous avez|MPG|cool-guy.q2.stats
fichier dans votre dir, vous l'obtiendrez avec la plainegrep
de la recherche avec des tuyaux.Donc, c'est pourquoi vous devez échapper à
|
dans votreegrep
commande pour obtenir le même effet que dansgrep
. Échappant à l'écran large de la signification particulière de|
de commande pourgrep
binaire.egrep
,?
,+
{
|
(
)
sont l'expression régulière symboles.commande grep est utilisé pour trouver les lignes ayant patran dans un fichier,nous avons séparé les méta-caractères en plaçant '\'
egrep est égal à grep -E,qui est une expression régulière étendue utilise {,},(,),|,? comme les méta-caractères sans donner '\' dans l'expression
fgrep est utilisé pour rechercher la chaîne de caractères fixe ,qui est égal à grep -F
test.txt
fichier
tuile
(f|t)ile
(\f\|\t)ile
grep "(f|t)ile" test.txt
(f|t)ile
grep "(\f\|\t)ile" test.txt
fichier
tuile
egrep "(f|t)ile" test.txt
fichier
tuile
egrep "(\f\|\t)ile" test.txt
(f|t)ile
fgrep "(f|t)ile" test.txt
(f|t)ile
fgrep "(\f\|\t)ile" test.txt
(\f\|\t)ile