Hoe je de grep-command in Linux gebruikt + voorbeelden 

Hoe je de grep-command in Linux gebruikt + voorbeelden 

Het command Global Regular Expression Print of grep doorzoekt specifieke regels met een bepaald patroon in een bestand. Het is handig om snel te controleren of een item bestaat, vooral voor grote items zoals logbestanden.

Je kunt verschillende opties toevoegen om het gedrag van het commando aan te passen voor specifieke taken, zoals omgekeerd zoeken en zoeken op meerdere trefwoorden. Door zijn flexibiliteit is grep een essentieel hulpmiddel voor het beheren van je Linux virtual private server (VPS).

Dit artikel legt uit hoe je het grep command in Linux gebruikt, inclusief de syntaxis en opties. Je leert ook enkele van de echte toepassingen voor het beheren van bestanden in je systeem.

Syntaxis van het grep-commando

De basissyntaxis van grep ziet er als volgt uit:

grep [options] pattern [FILE] 

Hier is de uitleg van wat elk element betekent:

  • grep – de naam van het hulpprogramma.
  • options – argumenten die het gedrag van het grep commando wijzigen.
  • pattern – het trefwoord dat je wilt opzoeken.
  • file – het item waarvan je de inhoud wilt doorzoeken. 

In de volgende sectie zullen we de meest gebruikte opties en hun praktijkvoorbeelden uitleggen.

Lees de grep handleiding voor meer informatie over alle opties. Je kunt deze hulpprogramma gids ook bekijken in je commandoregel interface door in te voeren:

grep --help

Vergeet niet dat je de “read” privilege moet hebben van het bestand dat je wilt controleren met grep. Lees onze handleiding over het hulpprogramma chmod voor meer informatie over rechten in Linux en hoe je ze kunt wijzigen.

Het Linux commando grep gebruiken

In deze sectie zullen we het algemene gebruik van het grep hulpprogramma bespreken. Als je een VPS gebruikt, voer het commando dan uit via een SSH-client zoals PuTTY. Voor desktops open je de Linux Terminal door op Ctrl + Alt + T te drukken.

Basis zoekopdracht

Het meest basale gebruik van grep is het filteren van tekstbestanden, waarbij regels worden uitgevoerd die een bepaald woord bevatten. Om dit te doen, voer je dit commando uit zonder een optie zoals deze syntaxis:

grep keyword file

Je kunt ook meerdere bestandsnamen als volgt opsommen:

grep pattern file1 file2 file3

Als je een zin wilt gebruiken als zoekstring, sluit je het patroon in met een aanhalingsteken. Dit commando vindt bijvoorbeeld regels met Linux distro in het voorbeeldbestand hostinger.txt:

grep "Linux distro" hostinger.txt 

Merk op dat de syntaxis alleen werkt als het invoerbestand zich in je huidige map bevindt. Als het zich op een andere locatie bevindt, moet je het volledige pad als volgt opgeven:

grep pattern /path/to/the/file.txt

Belangrijk! Omdat Linux commando’s zoals grep hoofdlettergevoelig zijn, moet je letten op het hoofdlettergebruik in je zoekpatroon en bestandsnaam.

Recursief zoeken

Je kunt recursief zoeken in alle bestanden en submappen in een map met de optie -r. Hier is de syntaxis:

grep -r keyword path/to/a/folder

We hebben bijvoorbeeld een tutorial/content/linux map met twee mappen genaamd commands en utilities. Om het woord VPS te zoeken in alle bestanden in deze mappen, voer je grep uit op het bovenliggende pad:

grep -r VPS tutorial/content/linux

Het command grep geeft een lijst van overeenkomende regels uit elk bestand en elke map in de map tutorial/content/linux.

Vermeldingen rond de overeenkomende regel afdrukken

Met Grep kun je regels na en voor de overeenkomende regel afdrukken om je meer context te geven. Om dit te doen, voeg je deze opties toe gevolgd door het aantal aangrenzende regels dat je wilt afdrukken:

  • A – drukt de regel na de overeenkomende invoer af.
  • B – geeft de regel voor de overeenkomende invoer weer.
  • C – geeft de regels zowel na als voor de invoer weer.

Voer bijvoorbeeld de volgende grep syntaxis uit om een regel na de overeenkomende regels af te drukken:

grep -A1 pattern file

Hoofdletter(on)gevoelig zoeken

Standaard behandelt grep patronen met verschillende lettertypen als verschillende strings. Bijvoorbeeld, je kunt niet zoeken naar “Grep” en “GREP” met het zoekwoord grep. Je kunt dit gedrag uitschakelen door de –i optie toe te voegen:

grep -i keyword file

Als we bijvoorbeeld willen zoeken naar het woord “vps” zonder onderscheid te maken tussen hoofdletters en kleine letters, voer dan het volgende commando uit:

grep -i vps hostinger.txt

Omgekeerde zoekopdracht

Voeg de -v optie toe aan je grep-command om de omgekeerde zoekopdracht in te schakelen, die de niet-overeenkomende regels afdrukt:

grep -v keyword file

Bijvoorbeeld, dit commando toont alleen de regels zonder het woord “VPS” uit het bestand hostinger.txt:

grep -v VPS hostinger.txt

Toon regelnummer

Als je werkt met grote bestanden zoals een logbestand, kan de uitvoergegevens erg lang zijn. Dit maakt het moeilijk om de locatie van het patroon te controleren. Om de taak te vereenvoudigen, kun je de regelnummers weergeven met de -n optie, zoals dit:

grep -n keyword file

Bijvoorbeeld, dit commando zal de regels afdrukken uit auth.log die het woord “unknown user” bevatten, samen met hun nummers:

grep -n "unknown user" auth.log

De regel die begint met het nummer één betekent dat het de eerste invoer is uit het bestand auth.log, en zo verder.

Tip van een expert

Je kunt grep-opties combineren om de zoekopdracht te verfijnen. Bijvoorbeeld, voer grep -nv patroon bestand uit om het regelnummers van de vermeldingen weer te geven die het opgegeven patroon niet bevatten.

Gebruik van grep met reguliere expressies

Reguliere expressies, of regex, zijn tekenreeksen die een zoekpatroon definiëren. Dit is handig voor het vinden van een zeer specifieke zoekopdracht zonder de zoekwoorden individueel op te sommen. Hier zijn verschillende regex-symbolen en hun betekenis:

  • . – komt overeen met elk willekeurig enkel teken.
  • * – vertegenwoordigt nul of meer van het voorafgaande teken.
  • + – betekent één of meer van het voorafgaande teken.
  • ? – betekent nul of één van het voorafgaande teken.
  • ^ – geeft het begin van een regex-patroon aan.
  • $ – vertegenwoordigt het einde van een regex-patroon.
  • () – groepeert patronen.

Deze reguliere expressies werken anders afhankelijk van of je de uitgebreide reguliere expressie (ERE) gebruikt met de –E optie of de standaard basis reguliere expressie (BRE). Voor meer informatie, lees de verschillen tussen BRE en ERE.

Bijvoorbeeld, als je patronen zoals “abc” en “acc” wilt zoeken, voer dan het volgende commando uit. Het punt (.) symbool komt overeen met elk teken:

grep -E 'a.c' file

De symbolen ^ en $ laten je zoeken naar regels die beginnen of eindigen met een specifiek patroon. Beschouw dit grep-commando bijvoorbeeld:

grep -E '^pattern' file

Het bovenstaande command komt overeen met regels die beginnen met “patroon“, zoals “patroon is een tekenreeks“. Ondertussen zal het volgende zoeken naar vermeldingen die eindigen met “patroon“:

grep -E 'pattern$' file

Je kunt ook meerdere regex-symbolen combineren om je zoekopdracht te verfijnen voor een specifieker resultaat. Bijvoorbeeld, dit commando zoekt naar regels die een woord bevatten dat begint met een H en eindigt met een R:

grep '^H.*R$' 1.txt

Zoeken naar meerdere patronen

Je kunt meerdere zoekwoorden zoeken met één enkele grep-command. De eenvoudigste manier om dit te doen is door de zoekwoorden binnen aanhalingstekens (‘) te plaatsen, gescheiden door een omgekeerde schuine streep () en pijpen (|). De syntaxis ziet er als volgt uit:

grep 'pattern1\|pattern2\|pattern3' file

In deze command gebruikt grep de standaard basis reguliere expressie (BRE), aangezien we geen opties hebben toegevoegd. Om te voorkomen dat de pijp als onderdeel van het zoekpatroon wordt geïnterpreteerd, ontsnappen we deze met de omgekeerde schuine streep.

Je kunt ook meerdere patronen zoeken zonder een omgekeerde schuine streep door de -E optie toe te voegen om de speciale functie van de pijp in te schakelen, zoals dit:

grep -E 'pattern1|pattern2|pattern3' file

In plaats van de -E optie kun je ook het egrep commando gebruiken:

egrep 'pattern1|pattern2|pattern3' file

Als je de patronen afzonderlijk wilt opgeven, gebruik dan de -e optie voor elke zoekopdracht. De syntaxis ziet er als volgt uit:

grep -e pattern1 -e pattern2 -e pattern3 file

Al deze variaties van de grep-command leveren hetzelfde resultaat op. Kies de versie die je het prettigst vindt.

Overeenkomsten tellen

Verschillende systeembeheertaken kunnen vereisen dat je controleert hoeveel regels in een bestand overeenkomen met een bepaald patroon. Dit is bijvoorbeeld nuttig voor het tellen van inlogpogingen van een specifiek IP-adres in een logbestand.

Om te controleren hoeveel regels een patroon bevatten, gebruik je de -c of -count optie als volgt:

grep -c pattern file

Let op: de -c optie telt de regels die overeenkomen, niet het aantal keren dat het patroon voorkomt. Als je het aantal patroonovereenkomsten wilt weten, gebruik dan de -o optie en stuur deze door naar het wc (word count) commando, zoals volgt:

grep -o pattern file | wc -l

In plaats van de gehele regel weer te geven, toont de -o optie alleen de patroonovereenkomsten, die vervolgens door het wc commando worden geteld. We zullen het gebruik van een pijp (|) in een latere sectie bespreken.

Let op dat deze opcommdracht ook andere varianten van het zoekwoord telt. Bijvoorbeeld, als je het patroon connect gebruikt, zal grep ook zoeken naar varianten zoals reconnect, connected, connecting en disconnected.

Als je alleen het exact overeenkomende woord wilt tellen, voeg dan de woordgrenzen toe aan het begin en het einde van je zoekwoord. Hier is een voorbeeld:

grep -o '\bpattern\b' file 

Combineer grep met andere commando’s

Naast bestanden en mappen kun je ook gegevens van een ander commando filteren met grep. Dit doe je door ze te combineren met een pipe (|) zoals volgt:

command | grep pattern

In dit voorbeeld wordt de uitvoer van het eerste commando naar grep gestuurd, die het resultaat filtert op basis van het zoekwoord. Hier is een voorbeeld uit de praktijk:

ls | grep '\.txt$'

Het commando ls toont de inhoud van je huidige map. Vervolgens filtert het grep-commando de uitvoer en toont alleen de TXT-bestanden in de map. Hier is een ander voorbeeld:

ps aux | grep "process_name" 

Het commando ps aux toont alle actieve processen op je systeem. Vervolgens zoekt grep naar een specifiek proces in de lijst op basis van de naam.
Afhankelijk van je taak kun je grep combineren met andere tools. Hostinger VPS-gebruikers die niet zeker weten welke hulpprogramma’s te gebruiken, kunnen onze AI-assistent, Kodee, raadplegen om uit te leggen en het volledige commando te genereren.
Bijvoorbeeld, vraag Kodee: “Ik wil alle services in mijn Ubuntu VPS lijst en gebruik het grep-hulpprogramma om de uitvoer te filteren, zodat alleen die gerelateerd aan NGINX worden weergegeven. Genereer het volledige commando.”

Kodee zal vervolgens het juiste commando voor jouw systeem en behoeften genereren.

Omleiding van de output

Systeembeheerders moeten soms de resultaten van het grep-commando opslaan voor verdere verwerking of archivering. Een gemakkelijke manier om dit te doen is door de uitvoer om te leiden naar een tekstbestand met behulp van het groter dan (>) symbool. Hier is de syntaxis:

grep pattern file > target_file.txt

Als het doelbestand niet bestaat, maakt het grep-commando dit automatisch aan in je huidige werkmap.

Om te controleren of grep de uitvoer correct opslaat, kun je de inhoud van het doelbestand afdrukken met het cat-commando, zoals volgt:

cat target_file.txt

Wil je meer leren over Linux-commando's?

Bekijk onze Linux-commando’s tutorial om meer te leren over andere veelgebruikte serverbeheertools.

Conclusie

Het grep-commando laat je een patroon gebruiken om regels uit een bestand te vinden. De basis syntaxis is grep patroon bestand, maar je kunt verschillende opties toevoegen om de zoekopdracht aan te passen op basis van je behoeften.

Bijvoorbeeld, voeg de -r optie toe om patronen recursief te zoeken in bestanden en submappen binnen een map. Hoewel grep standaard hoofdlettergevoelig is, kun je deze instelling uitschakelen met de -i vlag, zodat je een gematcht patroon kunt vinden, ongeacht de hoofdletters.

Je kunt ook regels die niet overeenkomen afdrukken met de -v optie en de -n optie toevoegen om hun volgnummer weer te geven. Voor complexere zoekpatronen kun je reguliere expressie-symbolen gebruiken.

In de praktijk moet je misschien grep combineren met andere commando’s en de zoekresultaten omleiden naar een bestand voor een backup. Omdat dit hulpprogramma zo veelzijdig is, kun je Kodee gebruiken om het volledige commando te genereren.

Veelgestelde vragen over het gebruik van het grep-commando

Waar wordt het grep-commando voor gebruikt?

Het grep-commando wordt vaak gebruikt om regels te zoeken die een specifiek trefwoord bevatten in een bestand. Het is ook handig om de uitvoer van een ander hulpprogramma te filteren en alleen regels af te drukken die een bepaald patroon bevatten. Dit doe je door het commando naar grep te pipen.

Wat zijn de meest gebruikte opties bij grep?

Een van de meest gebruikte opties in grep is -i, waarmee je de hoofdlettergevoeligheid in je zoekopdracht negeert. Een andere populaire optie is -r, waarmee je in alle bestanden en mappen binnen een map kunt zoeken.

Kan ik een patroon zoeken in meerdere bestanden of mappen met grep?

Ja, je kunt een trefwoord zoeken in meerdere bestanden of mappen door deze op te sommen. Gebruik grep patroon file1.txt file2.txt om een patroon in bestanden te vinden. Om trefwoorden in meerdere mappen te zoeken, gebruik je de -r optie, gevolgd door het pad van hun bovenliggende map.

Hoe zoek ik naar regels die niet overeenkomen met een patroon?

Om regels af te drukken die niet overeenkomen met een patroon, voeg je de -v optie toe aan je grep-commando. Dit activeert de omgekeerde zoekfunctionaliteit en geeft alle vermeldingen uit een bestand weer die het trefwoord niet bevatten.

Author
De auteur

Patty Reuser

Patty Reuser is een localization specialist voor de Nederlandse markt, die uitblinkt in het vertalen van content met een scherp marketinginzicht. Met haar expertise maakt ze complexe concepten eenvoudig en toegankelijk voor Nederlandse doelgroepen. Voor meer informatie, bekijk haar LinkedIn-profiel.