Wann sollte egrep anstelle von grep verwendet werden?

8

Ich bereite mich jetzt auf eine Bewertung des Linux-Terminals vor. Ich habe versucht, bei Google zu suchen, und festgestellt, dass sich die meisten Ressourcen eher auf das grundlegende "grep" als auf das leistungsfähigere "egrep" beziehen - nun, das hat zumindest der Professor in der Vorlesung gesagt.

Ich arbeite immer mit kleinen Samples, daher ist die Leistungsoptimierung zu weit entfernt.

Grundsätzlich würde ich gerne wissen, ob es Bereiche gibt, in denen ich zu egrep wechseln muss, um es besser zu machen. Ist es sicher, jetzt mit einfachem "grep" zu arbeiten? Wird es potenzielle Risiken geben?

Es tut mir leid, dass ich nur begrenzte Kenntnisse über Linux-Shell-Befehle habe. Die Manpage sieht für mich wie ein Labyrinth aus, und ehrlich gesagt habe ich nicht viel Zeit darauf verwendet, alle Funktionen zu verstehen, die beide Befehle bieten.

Michael Mao
quelle

Antworten:

10

egrep = grep -E

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

"Übereinstimmung mit erweiterten regulären Ausdrücken. Behandeln Sie jedes als ERE angegebene Muster, wie in der XBD-Spezifikation" Erweiterte reguläre Ausdrücke "beschrieben. Wenn ein gesamtes ERE-Muster mit einer Eingabezeile übereinstimmt, wird die Zeile abgeglichen. Ein Null-ERE entspricht jeder Zeile."

Also, mit egrep können Sie verwenden +, ?, | and ().

Ben
quelle
@omfgroflmao: Ist das der Unterschied? Nun, jetzt fühle ich mich wohl, mich nur auf die "grep" -Tutorials zu konzentrieren, ohne mir Gedanken über den "egrep" -Befehl zu machen :) Vielen Dank für Ihren Tipp!
1
Unabhängig davon , ob Sie es nennen egrepoder grep -E, erweiterte reguläre Ausdrücke machen komplexe Muster im Allgemeinen kürzer und daher leichter lesbar, indem viele `` entfernt werden. Es geht nicht um Leistung, sondern ist in gewissem Sinne ein besserer Weg.
Cascabel
5

egrep ist veraltet. Verwenden Sie grep -E. Beachten Sie, dass grepZeichenfolgenmuster für Sie gefunden werden. Wenn Sie nach dem Auffinden etwas mit Ihren Zeichenfolgen tun möchten, müssen Sie zu einem Zeichenfolgenverarbeitungswerkzeug wie awk(oder der Shell) weiterleiten. Das Werkzeug, das Sie sich auch ansehen sollten, ist awk, da es auch awkZeichenfolgen für Sie findet grepund die Verarbeitung für Sie erledigt, wenn Sie sie benötigen. Es hat alle Dinge, die grep / sed / etc in einem praktischen Tool tun.

user31894
quelle
@ ghostdog74: ahhh, also wird empfohlen, egrep nicht zu verwenden ... Ich dachte, es wäre der Ersatz für grep ... Danke für deinen Tipp!
2
Nur zur Veranschaulichung, auf vielen Maschinen, einschließlich meiner, ist egrep ein Link zu grep. Das heißt, sie sind tatsächlich genau der gleiche Befehl, verhalten sich jedoch unterschiedlich, je nachdem, wie Sie sie aufrufen.
MJB