Linux
Vinden in bestanden
grep and regular expressions
Leerdoelen
- We gaan data zoeken in bestanden op een Linux systeem
- We gaan zoeken met hele woorden
- We gaan leren wat reguliere expressies zijn
Zoeken in bestanden
- Als je wilt weten of een bepaald woord in een bestand staat
- Bijvoorbeeld in een configuratie of log bestand
- Zoeken op datum en/of tijd in een log-bestand
- Zoeken naar een term in een configuratie bestand
grep
- Global Regular Expression Parser:
grep
- Het gaat om: Regular Expression
- Een reeks karakters die een patroon beschrijven
- Er zijn verschillende standaarden die reguliere expressies beschrijven, wij gebruiken BRE
- grep matched per regel, dus als de zoekstring voorkomt in een regel wordt de gehele regel afgebeeld. Een regel is vanaf het eerste character tot en met de new-line
Werken met Regular expressions
sudo grep ^nameserver /etc/resolv.conf
grep localhost$ /etc/hosts
grep -v ^'#' /etc/resolv.conf
Laat alle regels weg die beginnen met een #
find /usr/share/man | grep ^/usr.*man[^1234]$
Recursief zoeken
- Met
grep kan je ook recursief zoeken
grep -r
- Recursief: ook alle subdirectories
- Het maakt grep niet uit of het een tekstbestand is of een binary, grep doorzoekt hem
- Pas dus op met waar je zoekt
sudo grep -H -r 127.0.0.1 /etc/*
grep opdracht
Als we willen weten waar onze hostname geconfigureerd staat kunnen we dat zo doen:
hostname
my-hostname
sudo grep -H -r 'my-hostname' /etc/* | grep -v ssh
Beschrijf wat de opdracht achter sudo doet
sed
- Stream editor
- A stream editor is used to perform basic text transformations on an input stream (a file or input from a pipeline).
- Werkt op tekst regels
- Kan wijzigingen doen op deze regels
- Regels kunnen komen uit een bestand of uit een pipeline
Samenvatting
- We hebben leren werken met
grep
grep zoekt in bestanden naar patronen
- We hebben leren werken met regular expressions:
- ^ en $ voor begin en eind van de regel
- . en .* voor 0 of meer characters
- [...] voor reeksen