logo

Grep-kommando i Linux/Unix med exempel

Kommandot 'grep' står för 'globalt reguljärt uttryck' . grep-kommandot filtrerar innehållet i en fil vilket gör vår sökning enkel.

Det är ett kommandoradsverktyg för att söka i vanlig textdatagrupper efter rader som är samma som ett reguljärt uttryck. Namnet 'grepp' kommer från kommandot, d.v.s. ed, som innehåller samma effekt. Ursprungligen designades grep för Unix-operativsystemet, men det blev tillgängligt för alla Unix-liknande system senare och några andra som OS 9.

Grep-filtret hittar en fil för ett specifikt teckenmönster och visar varje rad som innehåller det mönstret. Tecken ska stå inom citattecken om de förekommer i mönsterparametern med en speciell betydelse för skalet. Vanligtvis måste vi omsluta hela mönstret i ett citattecken om mönsterparametern inte är en vanlig sträng.

I ett uttryck som [a-z] beskriver minustecknet (-) cml ett intervall baserat på den aktuella sorteringsordningen. En sorteringsordning kan ange motsvarande klasser i teckenintervall för användning. Kommandot grep antar stdin när inga filer nämns.

Mönstret kallas det reguljära uttrycket som finns inuti filen. Mönstret är begränsade reguljära uttryck i formatet för kommandot egrep eller ed. Kommandot grep tillämpar en solid icke-deterministisk algoritm. Det är praktiskt när vi behöver filtrera stora loggfiler.

Kort historia om grep

Innan det fick titeln var grep ett konfidentiellt verktyg som specificerats av Ken Thompson för att hitta filer för flera mönster. Okänd till dess existens, Doug Mcllroy bad Thompson att specificera en sådan funktion. Svarade att han över en natt skulle tänka på ett sådant verktyg. Thompson gjorde förbättringar och korrigerade myrar i ungefär en timme på sitt program som kallas 's' (eller sök). Han presenterade funktionen för Mcllroy nästa dag, som sa att det var samma sak som han ville. Berättelsen om Thompson kan beskriva tron ​​att grep-kommandot specificerades över en natt.

Thompson specificerade den ursprungliga versionen i PDP-11 assemblerspråk för att stödja Lee E. McMohan kontrollera texten i Federalist Papers för att bestämma den enskilda tidningens författarskap. Ed-textredigeraren hade stöd för reguljära uttryck men kunde inte användas på så stor text; Thompson kopierade den koden till ett fristående verktyg. Han valde namnet på grund av i ed; kommandot grep skulle skriva ut varje rad på samma sätt som det beskrivna mönstret. Först lades grep till i version 4 Unix och sa det 'det är allmänt citerat som det prototypiska mjukvaruverktyget' , godkände Mcllroy grep med 'oåterkalleligt invanda' Thompsons verktygsfilosofi i Unix.

Implementeringar av grep

En rad grep-implementationer finns i flera mjukvaruutvecklingsmiljöer och operativsystem. Tidiga versioner inkluderade fgrep och egrep, introducerade i 7-versionen av Unix. egrep-versionen stöder syntax för ett utökat reguljärt uttryck inkluderat av Alfred Aho efter den ursprungliga implementeringen av reguljära uttryck av Ken Thompson. Fgrep-versionen hittar alla fasta strängar med Aho-Corasick strängmatchningsalgoritm . Dessa versionsbinärfiler är tillgängliga i moderna system, ansluter till grep eller anropar grep för ett skalskript med hjälp av rätt flagga som lagts till medan de vanligtvis används på POSIX-systemen.

stränglängd java

Andra kommandon inkluderar 'grepp' ord för att representera de hittar verktyg, vanligtvis sådana som är beroende av matchningar med reguljära uttryck. Till exempel, verktyget, dvs. 'pgrep' , visar de processer vars titlar är desamma som det vanliga uttrycket.

  • Grep är titeln på den inbyggda funktionen som söker efter de element i en lista som roar en viss egenskap i Perl programmeringsspråk.
  • Normalt kallas denna högre ordningsfunktion 'filtrera' eller 'var' på ett annat språk.
  • Kommandot, dvs. pcregrep , är en grep-implementering som använder syntaxen för Perl reguljära uttryck. Samma funktionalitet kan läggas till i grep GNU-versionen med -P-flaggan.
  • Även grep-portar (t.ex. in GnuWin32 och Cygwin ) körs på Microsoft Windows. Några Windows-versioner ger samma findstr- eller qgrep-kommando.
  • Dessutom är grep-kommandot en del av MSX-DOS2 Tools of ASCII för 2-versionen av MSX-DOS.
  • Kommandona fgrep, egrep och grep har skickats till IBM i OS.
    Adobe InDesign-programvaran har GREP-funktioner (sedan CS3-utgåvan) i dialogrutan för att ändra/hitta 'GREP' och specificeras med CS4 i 'GREP-stilar' styckestilar.

Hur installerar man grep i Linux?

Grep kommer förinstallerat i nästan alla distributioner av Linux. Men i fall kan vi installera det med kommandot nedan i terminalfönstret om det saknas i vårt system:

 $ sudo apt-get install grep 

grep med pipe

Kommandot 'grep' används vanligtvis med pipe (|) .

Syntax:

 command | grep 

Exempel:

 cat marks.txt | grep 9 

Linux Grep-filter1

Titta på ögonblicksbilden ovan, grep-kommandot filtrerar all data som innehåller '9'.

grep utan rör

Den kan också användas utan rör.

Syntax:

 grep 

Exempel:

 grep 9 marks.txt 

Linux Grep-filter2

Titta på ovanstående ögonblicksbild, kommandot grep gör samma arbete som tidigare exempel men utan pipe.

grep-alternativ

    grep -vM: Kommandot 'grep -v' visar rader som inte matchar det angivna ordet.

    Syntax:

     grep -v 

    Exempel:

     grep -v 9 marks.txt 

    Linux Grep-filter3

    Titta på ovanstående ögonblicksbild, kommando 'grep -v 9 marks.txt' visar rader som inte innehåller vårt sökord '9'.

    grep -i: Kommandot 'grep -i' filtrerar utdata på ett skiftlägesokänsligt sätt.

    Syntax:

     grep -i 

    Exempel:

     grep -i red exm.txt 

    Linux Grep-filter4

    Titta på ovanstående ögonblicksbild, kommando 'grep -i red exm.txt' visar alla rader som innehåller 'rött' oavsett om det är versaler eller gemener.

    grep -A/ grep -B/ grep -C

    grep -Ett kommando används för att visa rad efter resultatet .

    grep -B-kommandot används för att visa rad före resultatet .

    grep -C-kommandot används för att visa rad efter och rad före resultatet.

    Du kan använda (A1, A2, A3.....)(B1, B2, B3...)(C1, C2, C3...) för att visa valfritt antal rader.

    Syntax:

     grep -A grep -B grep -C 

    Exempel:

    stänga av utvecklarläget
     grep -A1 yellow exm.txt grep -B1 yellow exm.txt grep -C1 yellow exm.txt 

    Linux Grep-filter5

    Titta på ovanstående ögonblicksbild, kommando 'grep -A1 gul exm.txt' visar sökt rad med nästa rad, kommando 'grep -B1 gul exm.txt' visar sökt rad med en föregående rad och kommando 'grep -C1 gul exm.txt' visar sökt rad med en föregående och efterföljande rad.