Hver er munurinn á Grep, Egrep og Fgrep í Linux?
Eitt af frægu leitartækjunum í Unix-líkum kerfum sem hægt er að nota til að leita að hverju sem er hvort sem það er skrá, eða lína eða margar línur í skrá er grep gagnsemi. Það er mjög mikið í virkni sem má rekja til fjölda valkosta sem það styður eins og: leit með strengjamynstri, eða reg-ex mynstur eða perl byggt reg-ex o.s.frv.

Vegna mismunandi virkni hefur það mörg afbrigði, þar á meðal grep, egrep (útvíkkað GREP), fgrep (fast GREP), pgrep (ferli GREP), rgrep (endurkvæmt GREP) o.s.frv. En þessi afbrigði hafa smámun á upprunalegu grepi sem hefur gert þau vinsæl og til notkunar af ýmsum Linux forriturum fyrir ákveðin verkefni.
Aðalatriðið sem á eftir að rannsaka er hver er munurinn á þremur helstu afbrigðum, þ.e. „grep“, „egrep“ og „fgrep“ af grep sem gerir Linux notendum kleift að velja eina eða hina útgáfuna samkvæmt kröfunni.
Nokkrir sérstakir metastafir greps
+– Jafngildir einu eða fleiri tilvikum fyrri stafa.?– Þetta táknar næstum 1 endurtekningu af fyrri staf. Eins og:a?Myndi passa við „a“ eða „aa“.(– Upphaf skiptisjáningar.)– End of alternation tjáning.|– Passar við annaðhvort orðatiltækið aðskilið með|. Eins og:\(a|b)cdemyndi passa við annað hvort 'abcde' eða 'bbcde'.{– Þessi meta-stafur gefur til kynna upphaf sviðslýsingar. Eins og:\a{2}”passar við \aa í skránni, þ.e.a.s. 2 sinnum.}– Þessi meta-stafur gefur til kynna lok sviðsskilgreiningar.
Mismunur á milli grep, egrep og fgrep
Einhvern helsta muninn á grep, egrep og fgrep er hægt að auðkenna sem hér segir. Fyrir þetta sett af dæmum gerum við ráð fyrir að skráin sem aðgerðin er framkvæmd á sé:
grep eða Global Regular Expression Print er aðalleitarforritið á Unix-líkum kerfum sem getur leitað að hvers kyns strengjum á hvaða skrá eða lista yfir skrár sem er eða jafnvel úttak af hvaða skipun sem er.
Það notar Basic reglubundnar tjáningar fyrir utan venjulega strengi sem leitarmynstur. Í Basic Regular Expressions (BRE), meta-stafir eins og: {,},(,),|,+,? missa merkingu sína og eru meðhöndlaðir sem venjulegir stafir í strengi og þarf að sleppa þeim ef á að meðhöndla þá sem sérstafi.
Einnig notar grep Boyer-Moore reiknirit til að leita hratt í hvaða streng sem er eða regluleg tjáning.
$ grep -C 0 '(f|g)ile' check_file
$ grep -C 0 '\(f\|g\)ile' check_file

Eins og hér, þegar skipunin er keyrð án þess að sleppa ( ) og | þá leitaði hún að öllum strengnum þ.e. \(f|g)ile í skránni. En þegar sérstöfunum var sleppt, þá í stað þess að meðhöndla þá sem hluta af streng, meðhöndlaði grep þá sem meta-stafi og leitaði að orðum \file eða \gile í skránni.
Egrep eða grep -E er önnur útgáfa af grep eða Extended grep. Þessi útgáfa af grep er skilvirk og hröð þegar kemur að því að leita að reglulegu tjáningarmynstri þar sem hún meðhöndlar meta-stafi eins og þeir eru og kemur þeim ekki í staðinn fyrir strengi eins og í grep, og þess vegna ertu laus við byrðina af því að sleppa þeim sem í grep. Það notar ERE eða Extended Regular Expression settið.
Ef um egrep er að ræða, jafnvel þó þú sleppur ekki við meta-stafina, þá myndi það meðhöndla þá sem sérstafi og skipta þeim út fyrir sérstaka merkingu þeirra í stað þess að meðhöndla þá sem hluta af streng.
$ egrep -C 0 '(f|g)ile' check_file
$ egrep -C 0 '\(f\|g\)ile' check_file

Eins og hér, egrep leitaði að \file streng þegar meta-stafirnir voru ekki sloppnir eins og það myndi meina með merkingu þessara stafa. En þegar þessir stafir voru sloppnir, þá meðhöndlaði egrep þá sem hluti af streng og leitaði að heildarstreng \(f|g)ile í skránni.
Fgrep eða fasta grepið eða grep -F er enn ein útgáfan af grep sem er fljót að leita þegar kemur að því að leita að öllum strengnum í stað reglulegrar tjáningar þar sem það þekkir ekki reglulegu segin, hvorki neina meta-stafi. Til að leita að hvaða beinum streng sem er, þá er þetta útgáfan af grep sem ætti að velja.
Fgrep leitar að heilum streng og þekkir ekki einu sinni sérstafi sem hluta af venjulegri tjáningu, jafnvel þótt sleppt sé eða ekki.
$ fgrep -C 0 '(f|g)ile' check_file
$ fgrep -C 0 '\(f\|g\)ile' check_file

Eins og, þegar meta-stafir voru ekki sloppnir, leitaði fgrep að heildarstrengnum \(f|g)ile í skránni, og þegar meta-stafirnir voru sloppnir, þá leitaði fgrep skipunin fyrir \\(f\|g\)ile” allir stafir eins og er í skránni.
Við höfum þegar fjallað um nokkur hagnýt dæmi um grep skipun þú getur lesið þau hér, ef þú vilt fá meira út úr grep skipuninni í Linux.
Niðurstaða
Hér að ofan auðkenndur er munurinn á „grep“, „egrep“ og „fgrep“. Burtséð frá mismun á mengi reglulegra tjáninga sem notuð eru og hraða framkvæmdar, eru rest skipanalínubreytur þær sömu fyrir allar þrjár útgáfur af grep og jafnvel í stað \egrep eða \fgrep, \grep -E eða grep -F er mælt með því að nota.
Ef þú finnur einhvern annan mun á þessum þremur útgáfum af grep skaltu ekki nefna þá í athugasemdum þínum.