Vad är skillnaden mellan Grep, Egrep och Fgrep i Linux?

en av de berömda sökverktyg på Unix-liknande system som kan användas för att söka efter något om det är en fil, eller en rad eller flera rader i filen är grep utility. Det är väldigt stort i funktionalitet som kan hänföras till det stora antalet alternativ som det stöder som: sökning med Strängmönster eller reg-ex-mönster eller perl-baserat reg-ex etc.

skillnad mellan grep, egrep och fgrep
skillnad mellan grep, egrep och fgrep i Linux

På grund av dess varierande funktioner har den många varianter inklusive grep, egrep (förlängd grep), fgrep (fast grep), pgrep (process grep), rgrep (rekursiv grep) etc. Men dessa varianter har mindre skillnader till original grep som har gjort dem populära och att användas av olika Linux-programmerare för specifika uppgifter.

det viktigaste som återstår att undersöka är vad som är skillnaderna mellan de tre huvudvarianterna, dvs ’grep’, ’egrep’ och ’fgrep’ av grep som gör att Linux-användare väljer en eller annan version enligt krav.

några speciella Metatecken i grep

  1. + – motsvarande en eller flera förekomster av tidigare tecken.
  2. ? – detta betecknar nästan 1 upprepning av föregående tecken. Gilla: a? skulle matcha ” a ”eller ” aa”.
  3. ( – början av växlingsuttryck.
  4. ) – slutet av växlingsuttryck.
  5. | – matchar något av uttrycket separerat med '|'. Gilla: "(a|b)cde” skulle matcha antingen ”abcde” eller ”bbcde”.
  6. { – detta metatecken indikerar start av intervallspecifikator. Gilla: "a{2}” matchar” aa ” i fil dvs a 2 gånger.
  7. } – detta meta-tecken indikerar slutet av intervallspecifikatorn.

skillnader mellan grep, egrep och fgrep

några huvudskillnader mellan grep, egrep och fgrep kan markeras enligt följande. För denna uppsättning exempel antar vi filen på vilken operation som utförs för att vara:

Linux grep Command
Linux grep Command

grep Command

grep eller Global Regular Expression Print är det huvudsakliga sökprogrammet på Unix-liknande system som kan söka efter någon typ av sträng på någon fil eller lista över filer eller till och med utmatning av något kommando.

föreslagen läsning: 12 praktiska exempel på Linux grep-kommando

den använder grundläggande reguljära uttryck bortsett från normala strängar som ett sökmönster. I grundläggande reguljära uttryck (BRE), meta-tecken som: '{','}''(',')''|''+''?' förlorar sin betydelse och behandlas som normala tecken i sträng och behöver att undkomma om de ska behandlas som specialtecken.

föreslagen läsning: 11 Advance ’Grep’ kommandon på teckenklasser och fäste uttryck

dessutom använder grep Boyer-Moore algoritm för snabb sökning någon sträng eller reguljära uttryck.

$ grep -C 0 '(f|g)ile' check_file$ grep -C 0 '\(f\|g\)ile' check_file
Linux grep Command Example
Linux grep Command Example

Like here, when the command is run without escaping '(' ')' and '|' then it searched for the complete string i.e. "(f|g)ile” in the file. Men när specialtecknen flydde, istället för att behandla dem som en del av string, behandlade grep dem som metatecken och sökte efter ord "file” eller "gile” I filen.

Egrep kommando

Egrep eller grep-E är en annan version av grep eller den utökade grep. Den här versionen av grep är effektiv och snabb när det gäller att söka efter ett reguljärt uttrycksmönster eftersom det behandlar meta-tecken som det är och ersätter dem inte som strängar som i grep, och därmed befrias du från bördan att fly från dem som i grep. Den använder ERE eller den utökade reguljära Uttrycksuppsättningen.

vid egrep, även om du inte undviker metatecknen, skulle det behandla dem som specialtecken och ersätta dem för deras speciella betydelse istället för att behandla dem som en del av strängen.

$ egrep -C 0 '(f|g)ile' check_file$ egrep -C 0 '\(f\|g\)ile' check_file
Linux egrep Kommandoexempel
Linux egrep Kommandoexempel

som här, egrep sökte efter "file” sträng när metatecknen inte undkom som det skulle betyda med betydelsen av dessa tecken. Men när dessa tecken flydde behandlade egrep dem som en del av string och sökte efter complete string "(f|g)ile” I filen.

fgrep kommando

Fgrep eller den fasta grep eller grep-F är ännu en version av grep som är snabb att söka när det gäller att söka efter hela strängen i stället för reguljära uttryck som det inte känner igen de reguljära uttryck, varken några meta-tecken. För att söka någon direkt sträng, detta är den version av grep som ska väljas.

Fgrep söker efter fullständig sträng och känner inte ens igen specialtecken som en del av det reguljära uttrycket även om det har rymt eller inte rymt.

$ fgrep -C 0 '(f|g)ile' check_file$ fgrep -C 0 '\(f\|g\)ile' check_file
Linux fgrep Kommandoexempel
Linux fgrep Kommandoexempel

som, när metatecken undkom inte, fgrep sökte efter hela strängen "(f|g)ile” I filen, och när metatecknen flydde, sökte fgrep-kommandot efter "\(f\|g\)ile” alla tecken som finns i filen.

Vi har redan täckt några praktiska exempel på grep-kommando du kan läsa dem här, om du vill få ut mer av grep-kommandot i Linux.

lär dig 12 praktiska exempel på Linux grep Command

slutsats

ovan markerade är skillnaderna mellan’ grep’,’ egrep ’och’fgrep’. Bortsett från skillnaden i uppsättningen av reguljära uttryck som används, och hastigheten på utförandet, resten kommandoradsparametrar förblir desamma för alla de tre versionerna av grep och även i stället för ”egrep” eller ”fgrep”, ”grep-E” eller ”grep-F” rekommenderas att användas.

Posted on

Lämna ett svar

Din e-postadress kommer inte publiceras.