logo

Grep-opdracht in Linux/Unix met voorbeelden

Het commando 'grep' staat voor 'globale reguliere expressieafdruk' . grep-opdracht filtert de inhoud van een bestand, wat onze zoekopdracht gemakkelijk maakt.

Het is een opdrachtregelhulpprogramma waarmee u gegevensgroepen in platte tekst kunt doorzoeken op regels die hetzelfde zijn als een reguliere expressie. De naam 'greep' komt van het commando, d.w.z. ed, dat hetzelfde effect heeft. Oorspronkelijk was grep ontworpen voor het Unix-besturingssysteem, maar het werd later beschikbaar voor elk Unix-achtig systeem en een paar andere, zoals OS 9.

Het grep-filter vindt een bestand voor een specifiek tekenpatroon en toont elke regel die dat patroon bevat. Tekens moeten tussen aanhalingstekens staan ​​als ze voorkomen in de patroonparameter met een speciale betekenis voor de shell. Normaal gesproken moeten we het hele patroon tussen één aanhalingsteken plaatsen als de patroonparameter geen algemene tekenreeks is.

In een expressie als [a-z] beschrijft het minteken (-) cml een bereik op basis van de huidige sorteervolgorde. Een sorteervolgorde kan equivalente klassen in tekenbereiken specificeren voor gebruik. Het grep-commando gaat uit van stdin als er geen bestanden worden vermeld.

dereferentiewijzer

Het patroon wordt de reguliere expressie genoemd die zich in het bestand bevindt. Het patroon bestaat uit beperkte reguliere expressies in het formaat van de opdracht egrep of ed. Het grep-commando past een solide niet-deterministisch algoritme toe. Het is handig als we grote logbestanden moeten filteren.

Korte geschiedenis van grep

Voordat het de titel kreeg, was grep een vertrouwelijk hulpprogramma gespecificeerd door Ken Thompson om bestanden voor verschillende patronen te vinden. Onbekend tot zijn bestaan, Doug Mcllroy vroeg Thompson om een ​​dergelijke functie te specificeren. Hij antwoordde dat hij van de ene op de andere dag aan een dergelijk hulpprogramma zou denken. Thompson bracht verbeteringen aan en corrigeerde moerassen gedurende ongeveer een uur in zijn programma dat bekend staat als 'S' (of zoeken). De volgende dag presenteerde hij de functie aan Mcllroy, die zei dat het hetzelfde was als hij wilde. Het verhaal van Thompson zou de overtuiging kunnen beschrijven dat het grep-commando van de ene op de andere dag werd gespecificeerd.

Thompson specificeerde de eerste versie in de PDP-11-assembleertaal ter ondersteuning Lee E. McMohan het controleren van de tekst van de Federalist Papers om het auteurschap van het individuele artikel te bepalen. De ed-teksteditor bood ondersteuning voor reguliere expressie, maar kon niet voor zulke grote tekst worden gebruikt; Thompson kopieerde die code naar een zelfstandig hulpmiddel. Hij koos de naam vanwege in ed; het grep-commando zou elke regel hetzelfde afdrukken als het beschreven patroon. Eerst werd grep toegevoegd in versie 4 Unix, waarin dit werd gezegd 'het wordt over het algemeen genoemd als de prototypische softwaretool' , Mcllroy keurde grep met de goed 'onherroepelijk ingebakken' gereedschapsfilosofie van Thompson in Unix.

Implementaties van grep

Een reeks grep-implementaties is aanwezig in verschillende softwareontwikkelomgevingen en besturingssystemen. Vroege versies bevatten fgrep en egrep, geïntroduceerd in de 7e versie van Unix. De egrep-versie ondersteunt syntaxis voor een uitgebreide reguliere expressie die door Alfred Aho is opgenomen na de oorspronkelijke reguliere expressie-implementatie van Ken Thompson. De fgrep-versie vindt elke lijst met vaste tekenreeksen met de extensie Aho-Corasick-algoritme voor het matchen van strings . Deze binaire versies zijn beschikbaar in moderne systemen, waarbij ze verbinding maken met grep of grep een shellscript aanroepen met de juiste vlag die is toegevoegd terwijl ze over het algemeen op de POSIX-systemen worden ingezet.

Andere opdrachten zijn onder meer de 'greep' woord om te vertegenwoordigen, ze vinden tools, meestal tools die afhankelijk zijn van reguliere expressie-matches. Het hulpprogramma, d.w.z. 'pgrep' toont de processen waarvan de titels hetzelfde zijn als de opgegeven reguliere expressie.

  • Grep is de titel van de ingebouwde functie die zoekt naar de elementen binnen een lijst die een bepaalde eigenschap in de lijst amuseren Perl programmeertaal.
  • Meestal wordt deze functie van hogere orde aangeroepen 'filter' of 'waar' in een andere taal.
  • Het commando, d.w.z. pcregrep , is een grep-implementatie die de syntaxis voor reguliere Perl-expressies gebruikt. Dezelfde functionaliteit kan worden toegevoegd aan de grep GNU-versie met behulp van de vlag -P.
  • Ook grep-poorten (bijvoorbeeld in GnuWin32 En Cygwin ) uitvoeren op Microsoft Windows. Een paar Windows-versies bieden dezelfde findstr- of qgrep-opdracht.
  • Bovendien maakt het grep-commando deel uit van de MSX-DOS2 Tools van ASCII voor versie 2 van MSX-DOS.
  • De opdrachten fgrep, egrep en grep zijn verzonden naar het IBM i OS.
    De Adobe InDesign-software beschikt over GREP-functies (sinds de CS3-editie) in het dialoogvenster 'GREP' wijzigen/vinden en wordt gespecificeerd met behulp van CS4 in de 'GREP-stijlen' alineastijlen.

Hoe grep onder Linux te installeren?

Grep is vooraf geïnstalleerd in bijna elke Linux-distributie. In het geval dat we het echter kunnen installeren met de onderstaande opdracht in het terminalvenster als het ontbreekt in ons systeem:

 $ sudo apt-get install grep 

grep met pijp

Het commando 'grep' wordt over het algemeen gebruikt met pipe (|) .

Syntaxis:

 command | grep 

Voorbeeld:

 cat marks.txt | grep 9 

Linux Grep-filters1

Kijk naar de bovenstaande momentopname, het grep-commando filtert alle gegevens die '9' bevatten.

grep zonder pijp

Het kan ook zonder pijp worden gebruikt.

Syntaxis:

 grep 

Voorbeeld:

 grep 9 marks.txt 

Linux Grep-filters2

Kijk naar de bovenstaande momentopname, het grep-commando doet hetzelfde werk als het eerdere voorbeeld, maar zonder pipe.

grep-opties

    grep-vM: De opdracht 'grep -v' geeft regels weer die niet overeenkomen met het opgegeven woord.

    Syntaxis:

     grep -v 

    Voorbeeld:

     grep -v 9 marks.txt 

    Linux Grep-filters3

    Kijk naar de bovenstaande momentopname, opdracht 'grep -v 9 markeringen.txt' geeft regels weer die ons zoekwoord '9' niet bevatten.

    grep-ik: Het commando 'grep -i' filtert de uitvoer op een hoofdlettergevoelige manier.

    Syntaxis:

     grep -i 

    Voorbeeld:

     grep -i red exm.txt 

    Linux Grep-filters4

    Kijk naar de bovenstaande momentopname, opdracht 'grep -i rood exm.txt' geeft alle regels weer die 'rood' bevatten, zowel in hoofdletters als in kleine letters.

    grep -A/ grep -B/ grep -C

    grep -Een commando wordt gebruikt om het regel na het resultaat .

    grep -B commando wordt gebruikt om de lijn vóór het resultaat .

    grep -C commando wordt gebruikt om het regel na en regel ervoor het resultaat.

    U kunt (A1, A2, A3.....)(B1, B2, B3...)(C1, C2, C3....) gebruiken om een ​​willekeurig aantal regels weer te geven.

    Syntaxis:

     grep -A grep -B grep -C 

    Voorbeeld:

    veer modules
     grep -A1 yellow exm.txt grep -B1 yellow exm.txt grep -C1 yellow exm.txt 

    Linux Grep-filters5

    Kijk naar de bovenstaande momentopname, opdracht 'grep -A1 geel exm.txt' geeft de gezochte regel weer met de volgende volgende regel, opdracht 'grep -B1 geel exm.txt' geeft de gezochte regel weer met één voorafgaande regel en opdracht 'grep -C1 geel exm.txt' geeft de gezochte regel weer met één voorafgaande en volgende regel.