Es gibt ein klassisches Stück Computerwissen, das besagt: "Wenn du ein Problem hast und dich dafür entscheidest, es mit regulären Ausdrücken zu lösen, hast du jetzt zwei Probleme." Dies ergibt sich natürlich aus der Wahrnehmung, dass reguläre Ausdrücke kompliziert sind Mischung aus magischen Charakteren und Voodoo. Mit regulären Ausdrücken können Sie schnell und einfach elegante und prägnante Programmlogik erreichen, aber erst, wenn Sie gelernt haben, wie sie funktionieren und warum. Fast jedes Linux- oder Mac-System verfügt über einen leistungsstarken Regex-Tool-Aufruf, und grep ist eine wichtige Aufgabe für jeden Power-User oder Systemadministrator. Heute werden wir etwas erforschen, was Sie mit grep tun können und wie es eines der mächtigsten Werkzeuge in Ihrem Geek-Arsenal sein kann.

Wie es funktioniert

Kurz gesagt, greps Aufgabe besteht darin, einen Eingabeblock zu durchsuchen. Das ist ziemlich vage, also wird es am besten mit einem Beispiel beschrieben. Nehmen wir an, Sie haben eine Textdatei namens " distros.txt", die eine Liste von Linux-Distributionen enthält, darunter die folgende.

Debian - Stabile Serververteilung
Ubuntu - Desktop-Distribution ursprünglich auf Debian basiert
Kubuntu - Verwendet KDE-Desktop anstelle von Gnome
Fedora - Fortsetzung des kostenlosen Red Hat Desktop-Systems
Gentoo - Ein schnelles, quellbasiertes Linux-System für professionelle Benutzer
SuSE - Kommerzielles Linux von Novell
Mint - Von Ubuntu abgeleitete Distribution mit zusätzlicher eingeschränkter Software

Mit Grep kann der Text gelesen und gefiltert werden, um nur die gewünschten Teile anzuzeigen. Wenn Sie nur die Zeilen anzeigen möchten, die das Wort "Ubuntu" enthalten, führen Sie folgenden Befehl aus:

 grep Ubuntu distros.txt 

(Ihre Version von grep kann oder darf keine Farbhervorhebung enthalten, wie im obigen Beispiel)

Groß- / Kleinschreibung

Sie haben vielleicht bemerkt, dass unsere letzte Suche Kubuntu nicht zurück gab. Wenn nicht anders angegeben, nimmt grep an, dass Sie Ihren Ausdruck genau so eingegeben haben, wie Sie es wollten, und dies gilt für Groß- und Kleinschreibung. Wenn Sie nach "ubuntu" suchen, aber Ihre Textdatei "Ubuntu" enthält, findet Ihre Suche nichts. Verwenden Sie den Schalter -i, um die Suche ohne Berücksichtigung der Groß- / Kleinschreibung durchzuführen

 grep -i ubuntu distros.txt 

Ganze Welt

Bei der vorherigen Suche haben Sie alle Großbuchstaben des Wortes "Ubuntu" eingefügt. Es enthielt Kubuntu, weil es das gesuchte Wort enthält. Vielleicht möchten Sie nur die Standardversion verwenden, nicht Kubuntu oder Edubuntu, usw. Wenn dies der Fall ist, können Sie grep nur durch Übergeben der Option -w dem ganzen Wort zuordnen .

 grep -i ubuntu distros.txt 

Ausschluss

Genauso wie Sie grep verwenden können, um nur übereinstimmende Einträge anzuzeigen, können Sie damit auch alles anzeigen, außer den übereinstimmenden Einträgen. Um unsere vorherigen Suchanfragen zu erweitern, können wir jetzt die Option -v verwenden, um unsere Ergebnisse umzukehren und nur die Zeilen anzuzeigen, die nicht übereinstimmen.

Platzhalter

Grep hat volle Unterstützung für Wildcards, wenn Muster zusammenpassen. Wenn Sie Wildcards und andere Sonderzeichen verwenden, möchten Sie sicherstellen, dass Ihr Suchmuster in Anführungszeichen steht, sodass die Linux-Shell nicht versucht, sie vor grep zu interpretieren. Zu den üblichen Platzhaltern gehören * für Gruppen von Zeichen und. um ein einzelnes unbekanntes Zeichen darzustellen.

Bereiche

Wenn Ihnen die Platzhalter ein wenig zu weit sind, können Sie einzelne Zeichen oder einen Bereich für Ihre Suche angeben. Zeichen in eckigen Klammern werden in Ihrem Suchmuster enthalten sein. Zum Beispiel, wenn Sie eine Datei mit einer Liste wie

 Artikel 1 - Äpfel Artikel 2 - Bananen Artikel 3 - Kokosnüsse Artikel 4 - Pfirsiche Artikel 5 - Trauben Artikel 6 - Aprikose 

Sie können einen bestimmten Bereich auswählen, indem Sie etwas wie

 grep "Gegenstand [2-4]" Gegenstände.txt 

Grep ist ein immens mächtiges Werkzeug, und das gründliche Lernen kann sich in vielerlei Hinsicht auszahlen. Das Verständnis von Grep macht es auch viel einfacher, zu anderen mächtigen Konsolenwerkzeugen wie sed und awk überzugehen. Zwischen diesen drei Werkzeugen kann eine unglaubliche Menge an Konsolen- und Script-Magie mit viel weniger Aufwand als möglich ausgeführt werden. Wenn Sie ein Fan von Grep sind oder andere Tools wie sed und awk hier sehen möchten, hinterlassen Sie bitte eine Notiz in den Kommentaren.