Het "grep" -commando in gratis besturingssystemen zoals GNU / Linux is een zeer waardevol en nuttig commando. De naam komt van de uitdrukking in het Engels: «Global Regular Expression Print» en wordt gebruikt om een zoekpatroon of een reguliere expressie van een (1) bestand of meerdere tekstbestanden te vinden, matchen en weergeven.
In principe zoekt het «grep» -commando naar het patroon dat wordt aangegeven in de parameters van het commando-commando, en drukt de verkregen resultaten af volgens de aanwijzingen in de parameters van het commando-commando, dat kan zijn: het scherm of een uitvoerbestand.
Inleiding tot het "grep" -commando
Al in andere eerdere publicaties van dezelfde blog, zoals deze «Enkele basiscommando's op ...»We hebben commentaar geleverd op het basisgebruik van dit geweldige commando, maar In deze publicatie zullen we een meer gemiddeld en geavanceerd gebruik van het "grep" -commando zien binnen functionele en nuttige commando's die bepaalde echte taken kunnen vergemakkelijken. binnen onze shell-scripts of direct op de terminal om een directer resultaat te bereiken bij een specifieke uit te voeren taak.
Praktische voorbeelden
Bekijk onze positie / locatie
afdruk de inhoud van onze huidige map met behulp van een grafische mappenboom:
ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
voorbeeld:
Genereer een willekeurig wachtwoord van 30 tekens lang
Genereer willekeurige strings binnen / dev / urandom en selecteer en toon vervolgens een enkele (1) met behulp van een filtering met de opdracht «grep» voor alleen alfanumerieke tekens, met de voorwaarde van de grootte van de eerste 30 tekens, waardoor alle regelfeeds worden geëlimineerd .
strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n'; echo
voorbeeld:
Genereer een grafisch overzicht van verbindingen
Bekijk in grafische vorm (tabel) en vat het aantal interne en externe netwerkverbindingen samen dat op een bepaald moment is gedetecteerd door het "netstat" -commando van een host.
netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'
voorbeeld:
Het kan ook worden gebruikt om een overzichtstabel te genereren van het aantal verbindingen per type, zoals hieronder weergegeven:
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
voorbeeld:
Zoek een string (patroon) binnen een pad
Zoek en toon alle overeenkomsten van een patroon in bestandsnamen of bestandsinhoud. Het gebruik van parameters om dit te bereiken zijn: -R (Herhaling voor submappen), -n (Toon regelnummers van overeenkomsten), -i (Negeer hoofdletters en kleine letters), -s (Onderdrukken 'bestaat niet "En" kan niet worden gelezen "), -I (Negeer binaire bestanden bij zoeken).
grep -RnisI *
Het kan ook op een meer geavanceerde manier worden gebruikt als het binnen een opdrachtprompt wordt gebruikt met de opdracht "find" om een patroon te lokaliseren binnen een vooraf gedefinieerd bestandstype. zoals hieronder weergegeven:
find /opt/MilagrOS -name "*.txt" -exec grep -RnisI "MilagrOS" {} \;
Ken de hoeveelheid gegevens in het RAM-geheugen
Dit is handig om precies te weten hoeveel gegevens (informatie) er wachten om naar de harde schijf te worden geschreven en het is nodig om een computer opnieuw op te starten of af te sluiten.
grep ^Dirty /proc/meminfo
Ken ons WAN IP-adres
Het is altijd erg handig om ons WAN IP automatisch van de terminal te kennen en die parameter vervolgens door te geven aan een andere geautomatiseerde taak. Dit voorbeeld maakt gebruik van de DynDNS-service om het te verkrijgen.
curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]\+"
Maak een lijst van de apparatuur die is aangesloten op een netwerksegment
Door een for-lus te gebruiken met het "ping" -commando en het resultaat te filteren met het "grep" -commando, kunnen we onze computers die verbonden zijn met het netwerk valideren met de ping-service ingeschakeld zonder de noodzaak van de NMap-tool.
for i in {1..10}; do ping -c 1 -W 1 192.168.0.$i | grep 'from'; done
voorbeeld:
Om het getraceerde IP-adresveld weer te geven, kunt u deze regel geavanceerder gebruiken door de resultaten van het "grep" -commando te filteren met behulp van de "awk" en "cut" -commando's, zoals hieronder weergegeven:
for i in {100..110}; do ping -c 1 -W 1 192.168.0.$i | grep 'from'; done | awk '{ print $4 }' | cut -d ":" -f 1
voorbeeld:
Deze voorbeelden van opdrachtregels met het grep-commando. En ze dienen om direct vanaf de console te worden gebruikt of indirect door ze in een script in te voegen (geautomatiseerde taak).
In de volgende post over Shell Scripting zullen we andere commando's onderzoeken.
Als je wat meer wilt weten over het «grep» commando, bezoek dan deze link «DEBIAN Wiki»En als je meer wilt weten over Shell Scripting in onze eigen Blogkunt u onze andere publicaties over dit onderwerp bekijken door hier te klikken: Scripten DesdeLinux
Het artikel is geweldig, heel erg bedankt.
Graag gedaan, het is me een genoegen! Nu komt er een met het commando Sed.