Hvad er forskellen mellem Grep, Egrep og Fgrep?

et af de berømte søgeværktøjer på unikke systemer, der kan bruges til at søge efter noget, uanset om det er en fil eller en linje eller flere linjer i filen, er grep-værktøj. Det er meget stort i funktionalitet, som kan tilskrives det store antal muligheder, det understøtter som: søgning ved hjælp af strengmønster, eller reg-eks mønster eller perl-baseret reg-eks osv.

forskel mellem grep, egrep og fgrep
forskel mellem grep, egrep og fgrep i Linuk

På grund af dets forskellige funktionaliteter har den mange varianter, herunder grep, egrep (udvidet grep), fgrep (fast grep), pgrep (proces grep), rgrep (rekursiv grep) osv. Men disse varianter har mindre forskelle i forhold til original grep, hvilket har gjort dem populære og skal bruges af forskellige programmører til specifikke opgaver.

det vigtigste, der skal undersøges, er, hvad der er forskellene mellem de tre hovedvarianter, dvs.

nogle specielle Meta-tegn af grep

  1. + – svarende til en eller flere forekomster af tidligere tegn.
  2. ? – dette betegner næsten 1 gentagelse af tidligere tegn. Synes godt om: a? ville matche ‘a’ eller ‘aa’.
  3. ( – start af vekslingsudtryk.
  4. ) – afslutning af vekslingsudtryk.
  5. | – matchende enten af udtrykket adskilt af '|'. Synes godt om: "(a|b)cde” ville matche enten ‘abcde’ eller ‘bbcde’.
  6. { – dette metategn angiver start af områdespecifikator. Synes godt om: "a{2}” matcher “aa” i fil, dvs.a 2 gange.
  7. } – dette metategn angiver slutningen af områdespecifikatoren.

forskelle mellem grep, egrep og fgrep

nogle hovedforskelle mellem grep, egrep og fgrep kan fremhæves som følger. For dette sæt eksempler antager vi, at den fil, som operationen udføres på, skal være:

Linuk grep kommando
Linuk grep kommando

Grep kommando

grep eller Global Regulært udtryk Print er det vigtigste søgeprogram på unik-ligesom systemer, der kan søge efter enhver type streng på enhver fil eller liste over filer eller endda output af enhver kommando.

foreslået læsning: 12 praktiske eksempler på grep kommando

det bruger grundlæggende regulære udtryk bortset fra normale strenge som et søgemønster. I grundlæggende regulære udtryk (BRE), meta-tegn som: '{','}''(',')''|''+''?'at blive undsluppet, hvis de skal behandles som specialtegn.

foreslået læsning: 11 Advance ‘Grep’ kommandoer på Tegnklasser og parentes udtryk

også, grep bruger Boyer-Moore algoritme til hurtig søgning enhver streng eller regulært udtryk.

$ 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 da specialtegnene blev undsluppet, behandlede grep dem i stedet for at behandle dem som en del af strengen som metategn og søgte efter ord "file” eller "gile” i filen.

Egrep kommando

Egrep eller grep-E er en anden version af grep eller den udvidede grep. Denne version af grep er effektiv og hurtig, når det kommer til at søge efter et regulært udtryksmønster, da det behandler meta-tegn som det er og erstatter dem ikke som strenge som i grep, og derfor er du befriet fra byrden ved at undslippe dem som i grep. Det bruger ERE eller det udvidede regulære Udtrykssæt.

i tilfælde af egrep, selvom du ikke undslipper meta-tegnene, ville det behandle dem som specialtegn og erstatte dem med deres særlige betydning i stedet for at behandle dem som en del af strengen.

$ egrep -C 0 '(f|g)ile' check_file$ egrep -C 0 '\(f\|g\)ile' check_file
linuk egrep Kommandoeksempler
Linuk egrep Kommandoeksempler

Synes godt om her søgte egrep efter "file” streng, når metategnene ikke blev undsluppet, som det ville betyde med betydningen af disse tegn. Men da disse tegn blev undsluppet, behandlede egrep dem som en del af string og søgte efter komplet streng "(f|g)ile” i filen.

fgrep kommando

Fgrep eller den faste grep eller grep-f er endnu en version af grep, som er hurtig i søgning, når det kommer til at søge efter hele strengen i stedet for regulært udtryk, da det ikke genkender de regulære udtryk, hverken nogen meta-tegn. For at søge i en direkte streng er dette den version af grep, der skal vælges.

Fgrep søger efter komplet streng og genkender ikke engang specialtegn som en del af regulært udtryk, selvom det er undsluppet eller ikke undsluppet.

$ fgrep -C 0 '(f|g)ile' check_file$ fgrep -C 0 '\(f\|g\)ile' check_file
Linuks fgrep Kommandoeksempler
Linuks fgrep Kommandoeksempler

Synes godt om, når metategn ikke blev undsluppet, søgte fgrep efter den komplette streng "(f|g)ile” i filen, og når metategnene blev undsluppet, søgte fgrep-kommandoen efter "\(f\|g\)ile” alle tegn som er i filen.

Vi har allerede dækket nogle praktiske eksempler på grep-kommando, du kan læse dem her, hvis du vil få mere ud af grep-kommandoen.

Lær 12 praktiske eksempler på grep kommando

konklusion

ovenfor fremhævet er forskellene mellem ‘grep’, ‘egrep’ og ‘fgrep’. Bortset fra forskellen i det anvendte sæt regulære udtryk og udførelseshastigheden forbliver rest-kommandolinjeparametre de samme for alle de tre versioner af grep og endda i stedet for “egrep” eller “fgrep”, “grep-E” eller “grep-F” anbefales at blive brugt.

Posted on

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.