Wat is Grep
Grep, afgekort voor “global regular expression print”, is een commando dat wordt gebruikt voor het zoeken en matchen van tekstpatronen in bestanden met reguliere expressies. Bovendien is het commando standaard geïnstalleerd in elke Linux-distributie. In deze handleiding zullen we kijken naar de meest voorkomende toepassingen van het grep-commando, samen met populaire gebruiksscenario’s.
Grep-commando in Linux
Met het grep-commando kan een reguliere expressie of een tekenreeks worden gezocht in een tekstbestand. Om dit te demonstreren, laten we een tekstbestand welcome.txt maken en er wat inhoud aan toevoegen zoals getoond.
Welcome to Linux !
Linux is a free and opensource Operating system that is mostly used by
developers and in production servers for hosting crucial components such as web
and database servers. Linux has also made a name for itself in PCs.
Beginners looking to experiment with Linux can get started with friendlier linux
distributions such as Ubuntu, Mint, Fedora and Elementary OS.
Goed! Nu zijn we klaar om enkele grep-commando’s uit te voeren en de uitvoer te manipuleren om de gewenste resultaten te krijgen. Voer de onderstaande opdracht uit om naar een tekenreeks in een bestand te zoeken Syntax
$ grep "string" file name
OF
$ filename grep "string"
Voorbeeld:
$ grep "Linux" welcome.txt
Uitvoer Zoals je kunt zien, heeft grep niet alleen de tekenreeks “Linux” gezocht en gematcht, maar heeft het ook de regels afgedrukt waarin de tekenreeks voorkomt. Als het bestand zich in een andere bestandspad bevindt, zorg er dan voor dat je het bestandspad specificeert zoals hieronder weergegeven.
$ grep "string" /path/to/file
Kleur geven aan Grep-resultaten met de –color-optie
Als je werkt op een systeem dat de zoekreeks of het patroon niet in een andere kleur weergeeft dan de rest van de tekst, gebruik dan de --color
-optie om je resultaten te laten opvallen. Voorbeeld
$ grep --color "free and opensource" welcome.txt
Uitvoer
Zoeken naar een teken recursief in alle mappen
Als je een teken wilt zoeken in je huidige map en alle andere submappen, gebruik dan de -r
-vlag zoals getoond
$ grep -r "string-name" *
Bijvoorbeeld
$ grep -r "linux" *
Uitvoer
Hoofdlettergevoeligheid negeren
In het bovenstaande voorbeeld gaven onze zoekresultaten ons wat we wilden omdat de string “Linux” in hoofdletters was gespecificeerd en ook in hoofdletters in het bestand voorkomt. Laten we nu proberen te zoeken naar de string in kleine letters.
$ grep "linux" file name
Niets uit de uitvoer, toch? Dit komt omdat grepping de string “linux” niet kon vinden en matchen omdat de eerste letter in kleine letters is. Om hoofdlettergevoeligheid te negeren, gebruik de -i
vlag en voer het onderstaande commando uit
$ grep -i "linux" welcome.txt
Uitvoer Geweldig, nietwaar? De
-i
wordt normaal gesproken gebruikt om strings weer te geven ongeacht hun hoofdlettergevoeligheid.
Tel de regels waarin strings overeenkomen met de -c optie
Om het totale aantal regels te tellen waarin het stringpatroon voorkomt of verblijft, voer het onderstaande commando uit
$ grep -c "Linux" welcome.txt
Uitvoer
Grep gebruiken om de uitvoer om te keren
Om de uitvoer van Grep om te keren, gebruik de -v
vlag. De -v
optie geeft grep de opdracht om alle regels af te drukken die de expressie niet bevatten of overeenkomen. De -v optie vertelt grep om zijn uitvoer om te keren, wat betekent dat in plaats van overeenkomende regels af te drukken, het het tegenovergestelde doet en alle regels afdrukt die niet overeenkomen met de expressie. Terug naar ons bestand, laten we de regelnummers weergeven zoals getoond. Druk op ESC in de Vim-editor, typ een dubbele punt gevolgd door
set nu
en druk vervolgens op Enter. Uitvoer Nu, om de regels weer te geven die de string “Linux” niet bevatten, voer
$ grep -v "Linux" welcome.txt
Uitvoer Zoals je kunt zien, heeft grep de regels weergegeven die de zoekpatroon niet bevatten.
Nummer de regels die het zoekpatroon bevatten met de -n optie
Om de regels waar het stringpatroon overeenkomt te nummeren, gebruik de -n
optie zoals getoond
$ grep -n "Linux" welcome.txt
Uitvoer
Zoek naar het exact overeenkomende woord met de -w optie
Het doorgeven van de -w
-vlag zal zoeken naar de regel met het exact overeenkomende woord, zoals getoond
$ grep -w "opensource" welcome.txt
Output Echter, als je probeert
$ grep -w "open" welcome.txt
zullen er GEEN resultaten worden geretourneerd omdat we niet zoeken naar een patroon maar naar een exact woord!
Het gebruik van pipes met grep
De grep-opdracht kan samen met pipes worden gebruikt om een onderscheidende output te krijgen. Bijvoorbeeld, als je wilt weten of een bepaald pakket is geïnstalleerd op een Ubuntu-systeem, voer dan uit
$ dpkg -L | grep "package-name"
Bijvoorbeeld, om erachter te komen of OpenSSH is geïnstalleerd op je systeem, leidt de dpkg -l
-opdracht naar grep zoals getoond
$ dpkg -L | grep -i "openssh"
Output
Weergeven van het aantal regels voor of na een zoekpatroon met behulp van pipes
U kunt de -A of -B gebruiken om het aantal regels weer te geven dat voorafgaat aan of volgt op de zoekreeks. De -A-vlag geeft de regels weer die na de zoekreeks komen en -B drukt de uitvoer af die voor de zoekreeks verschijnt. Bijvoorbeeld
$ ifconfig | grep -A 4 ens3
Deze opdracht geeft de regel weer die de string bevat, plus 4 regels tekst na de ens-string in het ifconfig
-commando. Uitvoer Omgekeerd zal in het onderstaande voorbeeld het gebruik van de -B-vlag de regel weergeven die de zoekreeks bevat, plus 3 regels tekst voor de ether-string in het
ifconfig
-commando. Uitvoer
$ ifconfig | grep -B 4 ether
Het gebruik van grep met REGEX – reguliere expressies
De term REGEX is een acroniem voor REGuliere EXpressie. Een REGEX is een reeks tekens die wordt gebruikt om een patroon te matchen. Hieronder volgen enkele voorbeelden:
^ Matches characters at the beginning of a line
$ Matches characters at the end of a line
"." Matches any character
[a-z] Matches any characters between A and Z
[^ ..] Matches anything apart from what is contained in the brackets
Voorbeeld Om regels af te drukken die beginnen met een bepaald karakter, is de syntaxis als volgt;
grep ^character file_name
Bijvoorbeeld, om de regels weer te geven die beginnen met de letter “d” in ons bestand welcome.txt, zouden we uitvoeren
$ grep ^d welcome.txt
Uitvoer Om regels weer te geven die eindigen met de letter ‘x’, voer uit
$ grep x$ welcome.txt
Uitvoer
Hulp krijgen met meer Grep-opties
Als u meer wilt leren over het gebruik van het Grep-commando, voer dan het onderstaande commando uit om een voorbeeld te krijgen van andere vlaggen of opties die u samen met het commando kunt gebruiken.
$ grep --help
Voorbeelduitvoer We waarderen uw tijd voor het doornemen van deze tutorial. Voel u vrij om de commando’s uit te proberen en laat ons weten hoe het ging.
Source:
https://www.digitalocean.com/community/tutorials/grep-command-in-linux-unix