![Elke 10 seconden nieuwe Android-malware: rapport](/f/4144cec51d2c6e5537b712e9e1857265.jpg?width=100&height=100)
Ben je ooit geconfronteerd met de taak om naar een bepaalde string of patroon in een bestand te zoeken, maar heb je geen idee waar je moet beginnen met zoeken? Nou, hier is dan grep te hulp schieten!
grep is een krachtige zoekfunctie voor bestandspatronen die is uitgerust met elke distributie van Linux. Als het om wat voor reden dan ook niet op uw systeem is geïnstalleerd, kunt u het eenvoudig installeren via uw pakketbeheerder (apt-get Aan Debian/Ubuntu en jammie Aan RHEL/CentOS/Fedora).
$ sudo apt-get install grep #Debian/Ubuntu
$ sudo yum install grep #RHEL/CentOS/Fedora
Ik heb ontdekt dat de gemakkelijkste manier is om je voeten nat te maken met grep is om er gewoon in te duiken en enkele voorbeelden uit de echte wereld te gebruiken.
Laten we zeggen dat u zojuist een nieuwe kopie van de nieuwe Ubuntu op uw machine, en dat u gaat geven Python een schot scripten. Je hebt het internet afgezocht op zoek naar tutorials, maar je ziet dat er twee verschillende versies zijn van
Python in gebruik is, en u weet niet welke op uw systeem is geïnstalleerd door de Ubuntu installer, of als er modules zijn geïnstalleerd. Voer eenvoudig deze opdracht uit:# dpkg -l | grep -i python
ii python2.7 2.7.3-0ubuntu3.4 Interactieve objectgeoriënteerde taal op hoog niveau (versie 2.7) ii python2.7-minimal 2.7.3-0ubuntu3.4 Minimale subset van de Python-taal (versie 2.7) ii python-openssl 0.12-1ubuntu2.1 Python-wrapper rond de OpenSSL-bibliotheek. ii python-pam 0.4.2-12.2ubuntu4 Een Python-interface naar de PAM-bibliotheek
Eerst renden we dpkg –l, met een lijst geïnstalleerd *.deb pakketten op uw systeem. Ten tweede hebben we die uitvoer doorgesluisd naar: grep -i python, die eenvoudig zegt: "ga naar grep en filter eruit en retourneer alles met 'python' erin." De -I optie is er om case te negeren, zoals grep is hoofdlettergevoelig. De... gebruiken -I optie is een goede gewoonte om aan te beginnen, tenzij u natuurlijk een specifiekere zoekopdracht probeert te vinden.
De grep kan ook worden gebruikt om te zoeken en te filteren binnen individuele bestanden of meerdere bestanden. Laten we dit scenario nemen:
Je hebt wat problemen met je Apache-webserver, en je hebt contact gezocht met een van de vele geweldige forums op het net om hulp te vragen. De vriendelijke ziel die op je reageert, heeft je gevraagd om de inhoud van je /etc/apache2/sites-available/default-ssl het dossier. Zou het niet makkelijker zijn voor jou, de man die je helpt, en iedereen die het leest, als je alle becommentarieerde regels zou kunnen verwijderen? Nou dat kan! Voer dit gewoon uit:
# grep –v “#” /etc/apache2/sites-available/default-ssl
De –v optie vertelt grep om de uitvoer om te keren, wat betekent dat in plaats van overeenkomende regels af te drukken, het tegenovergestelde doet en alle regels afdrukt die niet overeenkomen met de uitdrukking, in dit geval de # becommentarieerde regels.
De grep kan erg handig zijn om te filteren van stout. Laten we bijvoorbeeld zeggen dat je een hele map vol met muziekbestanden in een heleboel verschillende formaten hebt. U wilt alle vinden *.mp3 bestanden van de artiest JayZ, maar je wilt geen van de geremixte nummers. Gebruik maken van een zoek commando met een paar grep pijpen zullen het lukken:
# vinden. –naam “*.mp3” | grep –i JayZ | grep -vi "remixen"
In dit voorbeeld gebruiken we find om alle bestanden met a. af te drukken *.mp3-extensie, pijp het naar grep -i om alle bestanden uit te filteren en af te drukken met de naam “JayZ” en dan nog een pijp naar grep -vi die filtert en niet alle bestandsnamen afdrukt met de string (in ieder geval) “remixen”.
Voorgesteld lezen:35 praktische voorbeelden van Linux Find Command
Een ander paar opties zijn de -EEN en -B schakelaars, die de overeenkomende regel en het aantal regels weergeeft dat voor of na de zoekreeks komt. Hoewel de man-pagina een meer gedetailleerde uitleg geeft, vind ik het het gemakkelijkst om de opties te onthouden als: -EEN = na, en -B = voordat:
# ifconfig | grep –A 4 eth0. # ifconfig | grep -B 2 UP
De grep's -C optie is vergelijkbaar, maar in plaats van de regels af te drukken die voor of na de string komen, worden de regels in beide richtingen afgedrukt:
# ifconfig | grep –C 2 lo
gelijk aan piping a grep tekenreeks naar aantal woorden (wc programma) kan de ingebouwde optie van grep hetzelfde voor u doen:
# ifconfig | grep -c inet6
De -N optie voor grep is erg handig bij het debuggen van bestanden tijdens compileerfouten. Het toont het regelnummer in het bestand van de opgegeven zoekreeks:
# grep –n “hoofd” setup..py
Als u wilt zoeken naar een tekenreeks in de huidige map samen met alle submappen, kunt u de. specificeren -R mogelijkheid om recursief te zoeken:
# grep –r “functie” *
passeren van de –w optie om grep zoekt naar het volledige patroon dat in de string zit. Gebruik bijvoorbeeld:
# ifconfig | grep -w "LOPEND"
Drukt de regel af die het patroon tussen aanhalingstekens bevat. Aan de andere kant, als je probeert:
# ifconfig | grep -w "UITVOEREN"
Er wordt niets geretourneerd omdat we niet op zoek zijn naar een patroon, maar naar een heel woord.
Enige vermelding verdienen zijn afgeleiden van grep. De eerste is zgrep, die, vergelijkbaar met zcat, is voor gebruik op gezipt bestanden. Er zijn dezelfde opties nodig als: grep en wordt op dezelfde manier gebruikt:
# zgrep –i fout /var/log/syslog.2.gz
De egrep is een andere afgeleide die staat voor “Uitgebreide algemene reguliere expressie”. Het herkent extra expressie-meta-tekens zoals: bij +? | en ().
Voorgesteld lezen:Wat is het verschil tussen Grep, Egrep en Fgrep in Linux?
egrep is erg handig voor het zoeken naar bronbestanden en andere stukjes code, mocht dat nodig zijn. Het kan worden aangeroepen vanuit de reguliere grep door de op te geven –E keuze.
# grep –E
De fgrep zoekt in een bestand of lijst met bestanden naar een tekenreeks met een vast patroon. Het is hetzelfde als grep –F. Een veelgebruikte manier van gebruiken fgrep is om er een bestand met patronen aan door te geven:
# fgrep –f file_full_of_patterns.txt file_to_search.txt
Dit is slechts een startpunt met grep, maar zoals u waarschijnlijk kunt zien, is het van onschatbare waarde voor verschillende doeleinden. Afgezien van de eenvoudige éénregelige commando's die we hebben geïmplementeerd, grep kan worden gebruikt om krachtig te schrijven cron banen, en robuust shell-scripts, als begin.
Wees creatief, experimenteer met de opties in de man-pagina, en kom met grep-uitdrukkingen die je eigen doelen dienen!