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:
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:
[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:
cat logs/server.log | grep ERRORHierdoor 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:
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:
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234Als het opgegeven bestand niet bestaat, retourneert grep een foutmelding:
grep "ERROR" nonexistent_file.log
# Output:
# grep: nonexistent_file.log: No such file or directoryProbeer het zelf
Oefening 1: Zoeken naar fouten in logbestanden
Filter het bestand 'logs/server.log' om alleen de regels uit te pakken en weer te geven die het woord 'ERROR' bevatten (hoofdlettergevoelig).
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
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.
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
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.
Toon hint
Gebruik grep met de optie -i om hoofdlettergevoeligheid te negeren.
Oplossing beschikbaar na 3 pogingen