Het egrep commando behoort tot de familie van het grep commando dat wordt gebruikt voor het zoeken naar patronen in Linux. Als u het grep commando hebt gebruikt, werkt egrep hetzelfde als grep -E (grep Extended regex’) doet. Egrep scant een specifiek bestand, regel voor regel, en drukt de regel(s) af die de zoekstring/reguliere expressie bevatten. In dit artikel zullen we 15 nuttige voorbeelden van de egrep commando’s uitleggen die nieuwelingen en zelfs experts zullen helpen om zinvolle zoekopdrachten uit te voeren in LinuxWe hebben deze voorbeelden uitgevoerd op een Debian 10 Buster systeem, maar ze kunnen gemakkelijk worden gerepliceerd op de meeste Linux distro’s.

Voorbeeld 1: Zoeken naar een specifieke string in een bestand

Dit is het meest voorkomende gebruik van het egrep commando. Wat u doet is dat u een tekenreeks opgeeft waarnaar u wilt zoeken, en de bestandsnaam waarin u die tekenreeks wilt opzoeken. Het resultaat geeft dan de hele regel weer die de gezochte string bevat.

Syntax:

$ egrep “search_string” filename

Voorbeeld:

$ egrep debian samplefile.txt

In dit voorbeeld heb ik gezocht naar het woord “debian” in het gespecificeerde tekstbestand. U kunt zien hoe de resultaten de hele regel weergeven die het woord “debian” bevat:

Voorbeeld 2: Zoeken naar een specifieke string in meerdere bestanden

Met het egrep commando, kunt u zoeken naar een string in meerdere bestanden die in dezelfde directory staan. Je moet alleen wat specifieker zijn in het opgeven van een “patroon” voor de gezochte bestanden. Dit zal duidelijker worden met het voorbeeld dat we zullen presenteren.

Syntax:

$ egrep “search_string” filename_pattern

Voorbeeld:

Hier zullen we zoeken naar het woord “debian” in alle .txt-bestanden door het bestandsnaampatroon als volgt op te geven:

$ egrep “debian” *.txt

De opdracht heeft alle regels afgedrukt, samen met de bestandsnamen die het woord “debian” bevatten van alle .txt-bestanden in de huidige directory.

Voorbeeld 3: Recursief zoeken naar de string in de hele directory

Wanneer u wilt zoeken naar een string in alle bestanden uit een directory en zijn submappen, kunt u dat doen door de -r vlag te gebruiken met het egrep commando.

Syntaxis:

$ egrep -r “search_string” *

Voorbeeld:

In dit voorbeeld zoek ik naar het woord “sample” in de bestanden van de gehele current(Downloads) directory.

$ egrep -r “sample” *

De resultaten bevatten alle regels, samen met de bestandsnamen, die het woord “sample” bevatten uit alle bestanden in de map Downloads en de submappen daarvan.

Voorbeeld 4: Hoofdletter-ongevoelig zoeken

Met de -i vlag, kunt u het egrep commando gebruiken om de resultaten af te drukken gebaseerd op een zoek string zonder dat u zich zorgen hoeft te maken over het hoofdlettergebruik.

Syntax:

$ egrep -i “search_string” filename

Voorbeeld:

Hier zoek ik naar het woord “debian” en ik wil dat de resultaten alle regels uit het bestand weergeven die het woord “debian” of “Debian” bevatten, ongeacht de hoofdletter.

$ egrep -i “search_string” filename

U kunt zien hoe de vlag -i mij heeft geholpen bij het ophalen van alle regels die de zoekreeks bevatten via een hoofdletterongevoelige zoekopdracht.

Voorbeeld 5: Zoeken naar een tekenreeks als een volledig woord en niet als een substring

Wanneer u normaal naar een tekenreeks zoekt met egrep, drukt het alle woorden af die de tekenreeks als een substring bevatten. Bijvoorbeeld, zoeken naar de string “on” zal alle woorden afdrukken die de string “on” bevatten zoals ” on”, “only”, “monitor”, “clone”, enz. Als je wilt dat de resultaten alleen het woord “on” weergeven als een volledig woord en niet als een sub-string, dan kun je de -w vlag gebruiken met egrep.

Syntax:

$ egrep -w “search_string” filename

Exemplaar:

Hierbij zoek ik naar de string “on” in een voorbeeldbestand:

$ egrep -i “on” samplefile.txt

U kunt in de bovenstaande uitvoer zien dat het ook het woord “only” bevat. Dit is echter niet wat ik wil, aangezien ik uitsluitend op zoek ben naar het woord “on”. Dus, dit is het commando dat ik in plaats daarvan zal gebruiken:

$ egrep -iw “on” samplefile.txt

Nu bevatten mijn zoekresultaten alleen de regels die het woord “on” als een geheel woord bevatten.

Voorbeeld 6: Alleen de bestandsnamen afdrukken die de tekenreeks bevatten

Soms willen we alleen de bestandsnamen ophalen die een specifieke tekenreeks bevatten, in plaats van de regels af te drukken die deze tekenreeks bevatten. Dit kan worden gedaan met de -l (kleine letters L) vlag met het egrep commando.

Syntax:

$ egrep -l “search_string” filename_pattern

Voorbeeld:

Hier zoek ik naar de string “sample” in alle .txt bestanden in de huidige directory:

$ egrep -l sample *.txt

De zoekresultaten drukken alleen de naam af van de bestanden die de opgegeven tekenreeks bevatten.

Voorbeeld 7: Alleen de zoekreeks van een bestand afdrukken

In plaats van de hele regel af te drukken die de zoekreeks bevat, kunt u de opdracht egrep gebruiken om de tekenreeks zelf af te drukken. De tekenreeks wordt afgedrukt naar het aantal keren dat hij in het opgegeven bestand voorkomt.

Syntax:

$ egrep -o “search_string” filename

Voorbeeld:

In dit voorbeeld zoek ik in mijn bestand naar het woord “Dit”.

$ egrep -o This samplefile_.txt

Note: Dit gebruik van het commando komt van pas wanneer u naar een tekenreeks zoekt op basis van een regelmatig uitdrukkingspatroon. We zullen reguliere expressies in detail uitleggen in een van de volgende voorbeelden.

Voorbeeld 8: Weergave van n aantal regels voor, na, of rond de zoekstring

Soms is het erg belangrijk om de context in een bestand te kennen waar een specifieke tekenreeks wordt gebruikt. De egrep komt in die zin van pas dat het kan worden gebruikt om de regel weer te geven die de zoek string bevat en ook een specifiek aantal regels ervoor, erna en eromheen.

Dit is het voorbeeld tekst bestand dat ik zal gebruiken om de komende voorbeelden uit te leggen:

N aantal regels Na de zoek string:

Als u de vlag A op de volgende manier gebruikt, wordt de regel met de zoekreeks en N aantal regels erna weergegeven:

$ egrep -A <N> “search_string” filename

Voorbeeld:

$ egrep -A 2 “sample” samplefile.txt

N aantal regels vóór de zoekstring:

Als u de B-vlag op de volgende manier gebruikt, wordt de regel met de zoekstring en N aantal regels ervoor weergegeven:

$ egrep -B <N> “search_string” filename

Voorbeeld:

$ egrep -B 2 “sample” samplefile.txt

N aantal regels vóór de zoekstring:

Als u de C-vlag op de volgende manier gebruikt, wordt de regel weergegeven die de zoekstring bevat, en N aantal regels ervoor en erna:

$ egrep -C <N> “search_string” filename

Voorbeeld:

$ egrep -C 2 “sample” samplefile.txt

Voorbeeld 9: Overeenkomen met reguliere expressie in bestanden

De opdracht egrep wordt krachtiger naarmate u naar reguliere expressies zoekt in plaats van naar vaste zoekreeksen in een bestand.

Syntaxis:

$ egrep “RegularExpressions” bestandsnaam

Laat ons uitleggen hoe u Reguliere Expressies kunt gebruiken in uw egrep-zoekopdracht:

Repetition operator Use
? Het voorgaande item voor ? is optioneel en wordt maximaal één keer gematched
* Het voorgaande item voor * wordt nul of meer keer gematched
+ Het voorgaande item vóór + zal één of meer keren gematcht worden
{n} Het voorgaande item wordt precies n aantal keren gematcht.
{n,} Het voorgaande item komt n of meer keren voor
{,m} Het voorgaande item komt maximaal m keer voor
{n,m} Het voorgaande item komt ten minste n keer voor, maar niet meer dan m keer

Voorbeeld:

In het volgende voorbeeld worden de regels met de volgende expressie gematcht:

beginnend met “Gnome” en eindigend op ” programma’s”

Voorbeeld 10: Markeren van de zoekstring

Wanneer u de omgevingsvariabele GREP_OPTIONS instelt zoals hieronder, krijgt u de uitvoer met de zoekstring/het zoekpatroon gemarkeerd in de resultaten:

$ sudo export GREP_OPTIONS=’–color=auto’ GREP_COLOR=’100;8′

U kunt dan op elke manier naar de string zoeken die we in de voorbeelden van dit artikel hebben beschreven.

Voorbeeld 11: Omgekeerd zoeken in een bestand

Met omgekeerd zoeken bedoelen we dat de opdracht egrep alles in het bestand afdrukt, behalve de regels die de zoekreeks bevatten. We zullen het volgende voorbeeldbestand gebruiken om invert search met egrep uit te leggen. We hebben de inhoud van het bestand afgedrukt met de opdracht cat:

Syntax:

$ egrep -v “search_string” filename

Voorbeeld:

Van het genoemde voorbeeldbestand willen we de regel met het woord “twee” weglaten in de uitvoer, daarom gebruiken we het volgende commando:

$ egrep -v “two” samplefile_.txt

U ziet dat de uitvoer alles bevat van het voorbeeldbestand behalve de tweede regel die de zoekstring “two” bevat.

Voorbeeld 12: Omgekeerd zoeken uitvoeren op basis van meerdere criteria/zoekpatronen

Met de vlag -v kunt u het egrep-commando ook een omgekeerde zoekopdracht laten uitvoeren op basis van meer dan één zoekstring/zoekpatroon.

We zullen hetzelfde voorbeeldbestand gebruiken dat we in voorbeeld 11 hebben genoemd om dit scenario uit te leggen.

Syntax:

$ egrep -v -e “search_string”/”pattern” -e “search_string”/”pattern”
…. filename

Voorbeeld:

Van het genoemde voorbeeldbestand willen we de regel(s) met de woorden “één” en “twee” weglaten in de uitvoer, daarom gebruiken we het volgende commando:

$ egrep -v -e “één” -e “twee” samplefile_.txt

We hebben twee woorden opgegeven om weg te laten met de -e vlag, daarom zal de uitvoer er als volgt uitzien:

Voorbeeld 13: Het aantal regels afdrukken dat overeenkomt met de gezochte string

In plaats van de gezochte string uit het bestand of de regels die deze bevatten af te drukken, kunt u het egrep commando gebruiken om het aantal regels af te tellen en af te drukken dat overeenkomt met de string. Deze telling kan worden opgehaald met de -c vlag bij het egrep commando.

Syntax:

$ egrep -c “search_string” filename

Exemplaar:

In dit voorbeeld zullen we de -c vlag gebruiken om het aantal regels te tellen dat het woord “This” bevat in ons voorbeeldbestand:

$ egrep -c “This” filename

U kunt hier ook de zoekfunctie inverteren gebruiken om het aantal regels dat de zoekreeks niet bevat, te tellen en af te drukken:

$ grep -v -c “search_string” filename

Voorbeeld 14: Het regelnummer weergeven waar de tekenreeks is gematcht

Met de vlag -n kunt u het egrep-commando de gematchte regel laten afdrukken samen met het regelnummer dat de zoek-tekenreeks bevat.

Syntax:

$ grep -n “search_string” filename

Exemplaar:

$ grep -n “This” samplefile_.txt

U kunt zien hoe de regelnummers tegen de zoekresultaten worden weergegeven.

Voorbeeld 15: Weergave van de positie in het bestand waar de zoekstring overeenkomt

Als u de positie in het bestand wilt weten waar de zoekstring voorkomt, kunt u de -b vlag gebruiken met het egrep commando.

$ grep -o -b “search_string” filename

Voorbeeld:

$ grep -o -b “This” samplefile_.txt

De zoekresultaten drukken de byte-offset af van het bestand waar het zoekwoord bestaat.Dit was een gedetailleerd gebruik van het egrep commando. Door een combinatie van de vlaggen te gebruiken die in dit artikel zijn uitgelegd, kunt u meer zinvolle en complexe zoekopdrachten uitvoeren op uw bestanden.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.