egrep: Befehlsbeispiele in GNU / Linux

egrep

grep Es ist eines der am häufigsten verwendeten Tools in der GNU / Linux-Befehlszeile. Obwohl es sich um ein sehr einfaches Tool handelt, können Sie eine große Anzahl von Vorgängen ausführen. Es wird insbesondere zusammen mit Pipes verwendet, um bestimmte Punkte in der Ausgabe eines vorherigen Befehls usw. zu lokalisieren. Es gibt aber auch ein Tool namens egrep, das dem Ausführen von grep mit der Option -E entspricht.

Das e stammt von "Extended Regex". Dies aktiviert die Option -E und das, was Sie standardmäßig in egrep haben, ohne diese Option zu verwenden. Das heißt, Sie können die verwenden erweiterte reguläre Ausdrücke. In diesem Tutorial werde ich nicht näher darauf eingehen, was reguläre Ausdrücke sind, wie sie verwendet werden können und welche Typen in * nix enthalten sind. Ich zeige nur praktische Beispiele einiger nützlicher Dinge, die Sie mit egrep tun können ...

grep, egrep und fgrep sind ähnlich. Tatsächlich entspricht egrep grep -E und fgrep grep -F. Das heißt, in dem Fall, der uns betrifft, werden die Muster auch als reguläre Ausdrücke interpretiert.

Sie Suche nach einer Zeile oder einem Wort in einer oder mehreren Dateien, wie es auch bei grep der Fall ist. Stellen Sie sich zum Beispiel vor, Sie möchten in einer Datei mit dem Namen snap.txt und in allen TXT-Dateien im aktuellen Verzeichnis nach dem Wort ubuntu suchen:

egrep ubuntu snap.txt

egrep ubuntu *.txt

Suche kann auch sein rekursiv So durchsuchen Sie den gesamten Inhalt des aktuellen Verzeichnisses:

egrep -r "hola mundo" *

Bisher wurden genaue Wörter oder Zeichenfolgen gesucht, dh unter Berücksichtigung von Groß- und Kleinschreibung (Groß- und Kleinschreibung beachten). Wenn Sie dies jedoch im Modus ohne Berücksichtigung der Groß- und Kleinschreibung tun möchten, egal ob Groß- oder Kleinbuchstabenkönnen Sie Folgendes verwenden (wenn Sie w hinzufügen, werden nur vollständige Übereinstimmungen gefunden):

egrep -i "ejemplo" documento.txt

egrep -iw "ejemplo" documento.txt

Zeigen Sie, nicht die Zufälle, aber die Dateinamen, in denen diese Übereinstimmungen gefunden wurden:

egrep -l hola *.txt

Zeigen Sie nur das Muster oder Wort innerhalb eines Dokuments gesucht:

egrep -o printf hola.c

Denken Sie daran, dass Sie alle Möglichkeiten nutzen können, die Sie sich vorstellen können. Sie können mehrere der zuvor angezeigten Optionen kombinieren oder sie mit anderen Optionen wie -A n und -B n ergänzen, wobei n die Anzahl der Zeilen, die Sie vor (vor) und nach (nach) anzeigen möchten des Spiels oder beides gleichzeitig (C), damit Sie sehen können, was das Spiel umgibt:

egrep -A 2 "printf" hola.c

egrep -B 2 "printf" hola.c

egrep -C 2 printf hola.c

Unterdrücken Sie die Zeilen, die eine Übereinstimmung enthalten, und zeigen Sie nur diejenigen an, die nicht übereinstimmen:

egrep -v "dos" números.doc

Oder wenn Sie es vorziehen, können Sie verwenden mehrere Wörter oder Übereinstimmungen mit -e. Zum Beispiel:

egrep -v -e "uno" -e "dos" -e "tres" números.txt

Und usa -c kann nur die Anzahl der Übereinstimmungen zählenoder invertieren Sie es mit -v, um die Anzahl der nicht übereinstimmenden Zeilen anzuzeigen. Zum Beispiel:

egrep -c "include" main.c

egrep -v -c "include" main.c

Und selbst Zeilennummer anzeigen wo das Match stattgefunden hat und welche Position es einnimmt:

egrep -n "void" hola.c

egrep -o -b "printf" hola.c

Und zusammen mit dem Reguläre Ausdrücke seine Fähigkeiten können erweitert werden. Suchen Sie beispielsweise eine Zeile, die mit Hallo beginnt und mit Tschüss endet, oder die mit Hallo beginnt, gefolgt von was auch immer, und dann wird das passende Tschüss angezeigt:

* Korrektur des folgenden Befehls: Dank des Kommentars des Lesers Manuel Alcocer konnte ich den folgenden Befehl ändern, da ein Fehler aufgetreten ist.

egrep '^Hola.*adiós$' ejemplo.txt

egrep "Hola.*adiós" ejemplo.txt

Wenn Sie sich jedoch über den Unterschied zu grep wundern, finden Sie hier ein Beispiel, das deutlich macht ... Wenn Sie grep ohne -E verwenden, sollten Sie das verwenden Escape-Sequenzen so dass es die Sonderzeichen als solche interpretiert, andernfalls würde es das Muster als solches interpretieren, ohne sie zu berücksichtigen. Bei egrep oder grep -E werden sie dagegen berücksichtigt. Zum Beispiel:
grep '^no\(fork\|group\)' /etc/group

Das wäre gleichbedeutend mit:

grep -E '^no(fork|group)' /etc/group
egrep '^no(fork|group)' /etc/group

Das heißt, es würde nach den passenden Linien suchen, die mit nofork oder nogroup beginnen. Wenn Sie jedoch den ersten Ausdruck von grep ohne die Escape-Sequenzen verwenden würden, wäre dies eine Suche das konkrete Muster nein (Gabel | Gruppe):

grep 'no(fork|group)' /etc/group

Sie können auch suchen alphanumerische Bereicheoder bestimmte Werte, um bestimmte IPs zu lokalisieren:
cat /etc/networks | egrep "192.168.1.[5-9]"
cat /etc/networks | egrep "192.168.[1-3].[5-9]"
cat /etc/networks | egrep "192.168.1.[0-3]|[5-9]"
egrep 192.168.4.[10,40] networks

Wenn Sie möchten, können Sie andere reguläre Ausdrücke verwenden, um spezifischere Suchvorgänge durchzuführen. Zum Beispiel | einen finden Zufall oder der andere:

egrep -i '^(printf|scanf)' hola.c

Sie können sogar finden Großbuchstaben, Kleinbuchstaben, nur alphabetische Zeichen oder alphanumerische Zeichen usw.unter Verwendung anderer Ausdrücke wie: [: alnum:], [: alpha:], [: digit:], [: lower:], [: print:], [: punct:], [: space:], [: oben:] usw. So suchen Sie beispielsweise nach Großbuchstaben:
egrep [[:upper:]] diccioario

Ich hoffe, es hilft Ihnen ... Bald werde ich reguläre Ausdrücke in einem Artikel erklären, der speziell diesem Thema gewidmet ist ...


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.

  1.   Manuel Alcocer Platzhalterbild sagte

    Guten Tag.

    Ein paar Bemerkungen ...

    Sie erklären den Befehl 'egrep', setzen aber nicht den Unterschied zwischen 'egrep' und 'grep', was hier sein sollte.

    Zum Beispiel:
    Mit grep: ip -4 a | grep '[0-9] \ +'
    Mit egrep: ip -4 a | egrep '[0-9] +'

    Ahh, und das ist falsch, 'egrep "Hallo. * Bye" example.txt'; Der Erfolg tritt hier auf, wenn eine Zeile in der Datei die Zeichenfolge 'Hallo' enthält, gefolgt von was auch immer und gefolgt von 'Auf Wiedersehen'. Die Zeile kann wirklich mit was auch immer beginnen und enden.

    Dies wäre, was der Artikel sagt:
    egrep '^ Hallo. * bye $' example.txt

    Und alle Optionen oder fast alle (ich höre nicht auf, es zu überprüfen) sind Optionen von 'grep', nicht ausschließlich von 'egrep'.

    Mit freundlichen Grüßen.

    1.    Holger sagte

      Vielen Dank, dass Sie diesen Fehler gemeldet haben. Was Sie zu den regulären Ausdrücken sagen, habe ich bereits in den zweiten Absatz aufgenommen. Ich werde ihnen einen bestimmten Artikel widmen, da es viele gibt und dieser Artikel zu lange dauern würde. Ein Gruß!

      1.    Manuel Alcocer Platzhalterbild sagte

        Hallo nochmal, Isaac.

        Im zweiten Absatz sagen Sie grundsätzlich oder hätten sagen sollen, dass 'egrep' ein Alias ​​von 'grep -E' ist, aber Sie geben kein Beispiel für die Verwendung von 'egrep' mit einem regulären Ausdruck, der anders geschrieben ist als wann wird von 'grep' verwendet.

        Einen Artikel zu erklären, um erweiterte reguläre Ausdrücke zu erklären, erscheint mir kühn, unter anderem, weil es Websites wie diese gibt, die keine Werbung machen und sehr wichtige Informationsarbeit für die GNU-Community leisten: https://www.rexegg.com/

        Ich schreibe hier nicht zum Trolling, meine Absicht bei all dem ist, dass wenn jemand diesen Eintrag liest, um zu sehen, was 'egrep' oder 'grep' tut, bitte schauen Sie sich andere Quellen an, dieser Eintrag kann kein Verweis auf irgendetwas sein, erklärt er Wenig, schlecht, bietet überflüssige Informationen und kann verwirrend sein, insbesondere für diejenigen, die keine Kenntnisse über GNU und die leistungsstarken Tools haben, die es bietet.

        Schließlich haben Sie den Fehler hinzugefügt und behoben, den ich nach meinem ersten Kommentar (^ $) angegeben habe. Wie auf anderen Websites sollten Sie die Person zitiert haben, die die Korrektur vorgenommen hat, oder zumindest sagen, dass es sich um eine Korrektur handelt, die Teil der GNU-Basis ist, der gleichen Basis, mit der dieser Blog gestartet wurde und wurde hat verloren.

        Ein Gruß.

        1.    Holger sagte

          Vielen Dank für Ihren Standpunkt.

  2.   fsafs sagte

    ffff