Direct naar de hoofdinhoud
Module 3 · Les 2 van 27/11 in de cursus~15 min
Modulelessen (2/2)

Pijpleidingen en filters (grep en |)

Een van de krachtigste kenmerken van de Linux-opdrachtregel is de mogelijkheid om verschillende commando's met elkaar te verbinden, zodat de uitvoer van de ene de invoer wordt voor de volgende. Deze techniek wordt uitgevoerd met behulp van pipelines en wordt doorgaans gecombineerd met de tekstfilteropdracht grep.


Tekst filteren: grep

De opdracht grep (Global Regular Expression Print) zoekt naar een specifieke tekstreeks in een of meer bestanden en drukt de overeenkomende regels af:

Bash
grep "string" [file_name]

Handige opties voor grep

  • grep -i "error" server.log: voert een hoofdletterongevoelige zoekopdracht uit (negeert het verschil tussen hoofdletters en kleine letters en vindt "Error", "error" of "ERROR").
  • grep -n "connection" server.log: toont het regelnummer samen met de overeenkomende regel.
  • grep -v "INFO" server.log: **Keert de zoekopdracht om, waarbij alleen de regels worden weergegeven die **niet** het opgegeven trefwoord bevatten.

Commando's aan elkaar koppelen: de pijplijn |

De pijpleidingbeheerder wordt weergegeven door de verticale balk |. Het stuurt de standaarduitvoer van het commando aan de linkerkant rechtstreeks naar de standaardinvoer van het commando aan de rechterkant:

Bash
[command1] | [command2]

Als een logbestand bijvoorbeeld enorm groot is en u naar een specifiek woord wilt zoeken zonder het hele bestand af te drukken, kunt u cat en grep combineren:

Bash
cat logs/server.log | grep ERROR

Hierdoor wordt het volledige server.log bestand met cat gelezen, maar in plaats van het naar het scherm af te drukken, wordt de stream doorgestuurd naar grep, dat alleen de regels filtert en weergeeft die het woord "ERROR" bevatten.


Gebruiksvoorbeelden en veelvoorkomende fouten

Als u zoekt naar een woord in kleine letters (bijvoorbeeld "post") in een bestand dat dit woord alleen in hoofdletters bevat (bijvoorbeeld "POST"), zal grep niets retourneren:

Bash
grep "post" logs/access.log
# Output: (no results, search is case-sensitive by default)

Om de regel te vinden, ongeacht de hoofdlettergebruik, gebruikt u de vlag -i:

Bash
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234

Als het opgegeven bestand niet bestaat, retourneert grep een foutmelding:

Bash
grep "ERROR" nonexistent_file.log
# Output:
# grep: nonexistent_file.log: No such file or directory

Probeer het zelf

Oefening 1: Zoeken naar fouten in logbestanden

Oefening#linux.m3.l2.e1
Pogingen: 0Laden…

Filter het bestand 'logs/server.log' om alleen de regels uit te pakken en weer te geven die het woord 'ERROR' bevatten (hoofdlettergevoelig).

Editor laden…
Toon hint

Gebruik de grep-opdracht gevolgd door het woord waarnaar u wilt zoeken en het bestandspad.

Oplossing beschikbaar na 3 pogingen

Oefening 2: Pijpleidingen en filters

Oefening#linux.m3.l2.e2
Pogingen: 0Laden…

Gebruik het cat-commando om het bestand 'logs/server.log' te lezen en stuur (|) de uitvoer ervan naar het grep-commando om alleen de regels te filteren en af ​​te drukken die het woord 'WARNING' bevatten.

Editor laden…
Toon hint

Verbind cat logs/server.log met grep WAARSCHUWING met behulp van de pipe '|' karakter.

Oplossing beschikbaar na 3 pogingen

Oefening 3: Hoofdletterongevoelig zoeken

Oefening#linux.m3.l2.e3
Pogingen: 0Laden…

Zoek naar alle regels die het woord 'post' bevatten (hoofdletters of kleine letters) in het bestand 'logs/access.log' met behulp van de juiste grep-vlag.

Editor laden…
Toon hint

Gebruik grep met de optie -i om hoofdlettergevoeligheid te negeren.

Oplossing beschikbaar na 3 pogingen