12 Praktische voorbeelden van Linux Grep-opdracht

Heb je ooit voor de taak gestaan om te zoeken naar een specifieke tekenreeks of patroon in een bestand, maar heb je geen idee waar je moet beginnen met zoeken? Nou, hier is het grep commando om te hulp te schieten!

Grep is een krachtige bestandspatroonzoeker die standaard is uitgerust op elke distributie van Linux. Als het om wat voor reden dan ook niet is geïnstalleerd op je systeem, kun je het eenvoudig installeren via je pakketbeheerder zoals hier getoond.

$ sudo apt install grep         [On Debian, Ubuntu and Mint]
$ sudo yum install grep         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a sys-apps/grep  [On Gentoo Linux]
$ sudo apk add grep             [On Alpine Linux]
$ sudo pacman -S grep           [On Arch Linux]
$ sudo zypper install grep      [On OpenSUSE]    

I have found that the easiest way to get your feet wet with the grep command is to just dive right in and use some real-world examples.

1. Bestanden zoeken en vinden in Linux

Stel dat je zojuist een verse kopie van de nieuwe Ubuntu op je machine hebt geïnstalleerd en dat je een poging gaat wagen met Python scripting.

Je hebt het web afgespeurd op zoek naar tutorials, maar je ziet dat er twee verschillende versies van Python in gebruik zijn, en je weet niet welke versie van Python is geïnstalleerd op Ubuntu door de installateur, of dat het eventuele modules heeft geïnstalleerd.

Voer eenvoudig het volgende dpkg commando uit met grep zoals getoond:

dpkg -l | grep -i python
Finding Files with Grep Command

Eerst voerden we dpkg –l uit, wat geïnstalleerde *.deb-pakketten op uw systeem oplijst. Ten tweede stuurden we die uitvoer naar grep -i python, wat simpelweg zegt “ga naar grep en filter en geef alles terug met ‘python’ erin.”

De -i-optie is er om hoofdlettergevoeligheid te negeren, aangezien grep hoofdlettergevoelig is. Het gebruik van de -i-optie is een goede gewoonte om in te komen, tenzij je natuurlijk een specifiekere zoekopdracht probeert te definiëren.

2. Bestanden zoeken en filteren in Linux

De grep kan ook worden gebruikt om te zoeken en filteren binnen individuele bestanden of meerdere bestanden. Laten we dit scenario nemen:

Je hebt wat problemen met je Apache-webserver, en je hebt contact opgenomen met een van de vele geweldige forums op het internet om wat hulp te vragen.

De vriendelijke ziel die op jou reageert, heeft je gevraagd de inhoud van je /etc/apache2/apache2.conf bestand te plaatsen. Zou het niet makkelijker zijn voor jou, de persoon die je helpt, en iedereen die het leest als je alle gecommentarieerde regels zou kunnen verwijderen? Nou, dat kan! Voer gewoon dit uit:

grep -v ^\# /etc/apache2/apache2.conf | grep .

De -v-optie vertelt grep om zijn uitvoer om te keren, wat betekent dat in plaats van overeenkomende regels af te drukken, het tegenovergestelde moet doen en alle regels afdrukken die niet overeenkomen met de expressie, in dit geval de # gecommentarieerde regels.

Merk op dat we ook grep . aan het einde hebben gebruikt om de uitvoer van alle lege regels te verbergen. Op deze manier zien we alleen de configuratie-instellingen in onze terminal.

Print Uncommented Lines in Linux

3. Alle .mp3-bestanden vinden in Linux

De grep kan erg handig zijn voor filtering van stdout. Bijvoorbeeld, stel dat je een hele map hebt vol met muziekbestanden in verschillende formaten.

Je wilt alle *.mp3 bestanden van de artiest JayZ vinden, maar je wilt geen van de geremixte tracks. Met een zoekopdracht vinden met een paar grep pijpen kom je er wel:

# find . -name “*.mp3” | grep –i JayZ | grep –vi “remix”

In dit voorbeeld gebruiken we find om alle bestanden met een *.mp3 extensie te printen, door te verwijzen naar grep –i om alle bestanden met de naam “JayZ” te filteren en printen, en vervolgens een pijp naar grep –vi die alle bestandsnamen met de string (in elk geval) “remix” filtert en niet print.

[ Je vindt dit misschien ook leuk: 35 Praktijkvoorbeelden van Linux Vind Opdracht ]

4. Toon het aantal regels voor of na de zoekstring

Nog een paar opties zijn de schakelaars -A en -B, die de overeenkomende regel en een aantal regels ervoor of erna tonen.

Terwijl de man-pagina een gedetailleerdere uitleg geeft, vind ik het het gemakkelijkst om de opties te onthouden als -A = na, en -B = voor:

ifconfig | grep -A 4 inet
ifconfig | grep -B 2 UP
Print Number of Lines Before and After String

5. Prints aantal regels rond match

De grep’s -C optie is vergelijkbaar, maar in plaats van de regels te printen die ofwel voor of na de tekenreeks komen, print het de regels in beide richtingen:

# ifconfig | grep -C 2 lo

 TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 15314  bytes 1593769 (1.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0

6. Tel het aantal matches

Vergelijkbaar met het pipen van een grep string naar woord tellen (wc commando) kan de ingebouwde optie van grep hetzelfde voor u doen:

# ifconfig | grep -c inet6

7. Zoek bestanden op opgegeven string in Linux

De –n optie voor grep is zeer handig bij het debuggen van bestanden tijdens compile fouten. Het toont het regelnummer in het bestand van de gegeven zoekstring:

# grep -n "main" setup.py

8. Zoek een string recursief in alle directories

Als u een string in de huidige directory, samen met alle subdirectories, wilt zoeken, kunt u de –r optie specificeren om recursief te zoeken:

# grep -r “function” *

9. Zoek naar het volledige patroon

Door de -w optie door te geven aan grep, zoekt u naar het volledige patroon dat in de string zit. Bijvoorbeeld, door:

# ifconfig | grep -w "RUNNING"

Wordt de regel met het patroon in aanhalingstekens geprint. Aan de andere kant, als u probeert:

# ifconfig | grep -w "RUN"
Find Entire Pattern

Zal er niets worden geretourneerd, omdat we niet naar een patroon, maar naar een volledig woord zoeken.

10. Zoek een tekenreeks in Gecomprimeerde Bestanden

Waard om te vermelden zijn de afgeleiden van grep. De eerste is zgrep, die, net als zcat, bedoeld is voor gebruik op gecomprimeerde bestanden. Het accepteert dezelfde opties als grep en wordt op dezelfde manier gebruikt:

# zgrep -i error /var/log/syslog.2.gz
Search String in Gzipped Files

11. Overeenkomsten van Reguliere Expressies in Bestanden

De egrep-opdracht is een andere afgeleide die staat voor “Uitgebreide Globale Reguliere Expressie”. Het herkent aanvullende expressie-meta-karakters zoals at + ? | en ().

egrep-opdracht is zeer nuttig voor het doorzoeken van bronbestanden en andere stukken code, mocht dat nodig zijn. Het kan worden opgeroepen vanuit reguliere grep door de -E optie te specificeren.

grep -E

12. Zoek een Vaste Patroonreeks

De fgrep-opdracht doorzoekt een bestand of lijst van bestanden op een vaste patroonreeks. Het is hetzelfde als grep -F. Een veelvoorkomende manier om fgrep te gebruiken is door een bestand met patronen aan te geven:

fgrep –f file_full_of_patterns.txt file_to_search.txt

Dit is slechts een beginpunt met grep, maar zoals je waarschijnlijk kunt zien, is het onmisbaar voor verschillende doeleinden. Afgezien van de eenvoudige éénregelopdrachten die we hebben geïmplementeerd, kan grep worden gebruikt om krachtige cron-taken en robuuste shell-scripts te schrijven, om te beginnen.

Wees creatief, experimenteer met de opties op de man-pagina, en bedenk grep-uitdrukkingen die aan je eigen doeleinden voldoen!

Source:
https://www.tecmint.com/12-practical-examples-of-linux-grep-command/