Inhoudsopgave
tools & data 2
Hier zijn enkele eenvoudige en duidelijke voorbeelden van grep, egrep, sed, awk en regex, telkens met het commando en het verwachte resultaat.
Maak zelf een fictief tekstbestand genaamd
log.txt in je $HOME directory met de volgende inhoud:
(die kun je copy-pasten)
INFO: Systeem gestart om 08:00
WARNING: Hoge temperatuur gedetecteerd
ERROR: Sensor niet gevonden
INFO: Update voltooid om 09:15
ERROR: Verbinding verbroken
grep: zoek naar exacte woorden ...
... (we zoeken naar regels die het woord “ERROR” bevatten) ...user@c-vbox:~$grep"ERROR"log.txt- resultaat:
ERROR: Sensor niet gevonden ERROR: Verbinding verbroken
egrep: gebruik van uitgebreide patronen ... de "|" betekent of
... (we zoeken naar regels die het woord “ERROR” of "WARNING" bevatten) ...user@c-vbox:~$egrep"ERROR | WARNING"log.txt- resultaat:
WARNING: Hoge temperatuur gedetecteerd ERROR: Sensor niet gevonden ERROR: Verbinding verbroken
-
grepmet regex: zoeken op patroon met regular expression
... (we zoeken naar regels die beginnen met "INFO" daarvoor dient de ^ ) ...user@c-vbox:~$grep"^INFO"log.txt- resultaat:
INFO: Systeem gestart om 08:00 INFO: Update voltooid om 09:15
grepmet regex: zoeken op tijdstip(pen)
... (we zoeken naar tijdstippen in formaat "hh:mm".
... De\{2\}betekent “exact twee cijfers”.)user@c-vbox:~$grep "[0-9]\{2\}:[0-9]\{2\}" log.txt- resultaat: (zelfde als hier net boven)
INFO: Systeem gestart om 08:00 INFO: Update voltooid om 09:15
awkis meer een programmeertaal voor het verwerken van gestructureerde gegevens, terwijlgrepprimair bedoeld is voor het zoeken naar tekstpatronen.awkkan patronen vinden en vervolgens complexe bewerkingen uitvoeren, zoals het extraheren van velden en rekenkundige berekeningen, wat verder gaat dan de simpele zoekfunctie vangrep. Hieronder enkele voorbeelden ...
.
We gebruiken een fictief bestandlog.txtmet de volgende inhoud:INFO: Systeem gestart om 08:00 WARNING: Hoge temperatuur gedetecteerd ERROR: Sensor niet gevonden INFO: Update voltooid om 09:15 ERROR: Verbinding verbroken5a.
grep "ERROR" log.txt- resultaat:
ERROR: Sensor niet gevonden ERROR: Verbinding verbroken
- resultaat:
awk: toon alleen tijdstippen ...
awk -F"om " '/INFO/ {print $2}' log.txt
-resultaat: (al kan je hier niet zoveel me doen)
08:00
09:15
sed: vervang ERROR door FOUT
sed 's/ERROR/FOUT/' log.txt- resultaat:
INFO: Systeem gestart om 08:00 WARNING: Hoge temperatuur gedetecteerd FOUT: Sensor niet gevonden INFO: Update voltooid om 09:15 FOUT: Verbinding verbroken
- resultaat:
Zelfs een simpele
grep-regel kan een drempelmoment zijn.
Zelfs eenawk-lus kan iets onthullen wat je niet zocht.
En zelfs een sfinx met regex heeft ooit moeten beginnen met^hello$.