Grep: shell-scripts leren met behulp van de Grep Terminal-opdracht

grep commando

Shell-scripts leren met behulp van de terminalopdracht: grep

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:

Grep: Tree-achtige directory

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:

Grep: Genereer wachtwoord

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:

Grep: Netstat Connections Graph

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:

Grep: overzichtstabellen met Netstat

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  *

Grep: zoeken naar patronen in bestanden en mappen

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" {} \;

Grep: zoeken naar patronen in bestanden

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

Grep: gegevens in RAM

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:].]\+"

Grep: ken ons WAN IP

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:

Grep: LAN IP-lijst

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


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Leandro zei

    Het artikel is geweldig, heel erg bedankt.

  2.   Linux na installatie zei

    Graag gedaan, het is me een genoegen! Nu komt er een met het commando Sed.