X'inhi d-differenza bejn Grep, Egrep u Fgrep fil-Linux?


Waħda mill-għodda ta 'tfittxija magħrufa fuq sistemi bħal Unix li tista' tintuża biex tfittex xi ħaġa kemm jekk tkun fajl, jew linja jew linji multipli fil-fajl hija l-utilità grep. Huwa vast ħafna fil-funzjonalità li jista 'jiġi attribwit għan-numru kbir ta' għażliet li jappoġġja bħal: tiftix bl-użu ta 'mudell ta' string, jew mudell reg-ex jew reg-ex ibbażat fuq perl eċċ.

Minħabba l-funzjonalitajiet varji tiegħu, għandu ħafna varjanti inklużi grep, egrep (GREP Estiż), fgrep (GREP Fiss), pgrep (GREP Proċess), rgrep (GREP Rikursiv) eċċ. Iżda dawn il-varjanti għandhom differenzi żgħar għall-grep oriġinali li għamilhom. popolari u biex jintuża minn diversi programmaturi Linux għal ħidmiet speċifiċi.

Il-ħaġa ewlenija li għad trid tiġi investigata hija x'inhuma d-differenzi bejn it-tliet varjanti ewlenin jiġifieri 'grep', 'egrep' u 'fgrep' ta 'grep li jġiegħel lill-utenti tal-Linux jagħżlu verżjoni waħda jew oħra skont ir-rekwiżit.

Xi Meta-Karattri Speċjali ta 'grep

  1. + – Ekwivalenti għal okkorrenza waħda jew aktar ta' karattru preċedenti.
  2. ? – Dan jindika kważi ripetizzjoni waħda tal-karattru preċedenti. Bħal: a? Taqbel ma’ ‘a’ jew ‘aa’.
  3. ( – Bidu ta' espressjoni ta' alternazzjoni.
  4. ) – Tmiem tal-espressjoni tal-alternanza.
  5. | – Tqabbil ta' waħda mill-espressjonijiet separati minn |. Bħal: \(a|b)cde” ikun jaqbel jew ‘abcde’ jew ‘bbcde’.
  6. { – Dan il-meta-karattru jindika l-bidu tal-ispeċifikazzjoni tal-firxa. Bħal: \a{2}” taqbel ma' \aa fil-fajl jiġifieri 2 darbiet.
  7. } – Dan il-meta-karattru jindika t-tmiem tal-firxa tal-ispeċifikazzjoni.

Differenzi Bejn grep, egrep u fgrep

Xi differenzi ewlenin bejn grep, egrep u fgrep jistgħu jiġu enfasizzati kif ġej. Għal dan is-sett ta’ eżempji qed nassumu li l-fajl li fuqu qed titwettaq l-operazzjoni huwa:

grep jew Global Regular Expression Print huwa l-programm ewlieni ta’ tfittxija fuq sistemi Unix-like li jista’ jfittex kwalunkwe tip ta’ spag fuq kwalunkwe fajl jew lista ta’ fajls jew saħansitra output ta’ kwalunkwe kmand.

Hija tuża Espressjonijiet Regolari Bażiċi apparti minn kordi normali bħala mudell ta 'tfittxija. Fl-Espressjonijiet Regolari Bażiċi (BRE), meta-karattri bħal: {,},(,),|,+,? jitilfu t-tifsira tagħhom u jiġu ttrattati bħala karattri normali ta' spag u jeħtieġ li jiġu maħruba jekk iridu jiġu ttrattati bħala karattri speċjali.

Ukoll, grep juża l-algoritmu Boyer-Moore biex ifittex malajr kwalunkwe string jew espressjoni regolari.

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

Bħal hawn, meta l-kmand jitmexxa mingħajr ma jaħrab ( ) u | allura fittex is-sekwenza sħiħa jiġifieri \(f|g)ile” fil-fajl. Iżda meta l-karattri speċjali ġew maħruba, allura minflok ma trattathom bħala parti minn string, grep ittrattahom bħala meta-karattri u fittex kliem \file jew \gilefil-fajl.

Egrep jew grep -E hija verżjoni oħra ta 'grep jew il-grep Estiża. Din il-verżjoni tal-grep hija effiċjenti u veloċi meta tiġi biex tfittex mudell ta’ espressjoni regolari peress li tittratta l-meta-karattri kif inhi u ma tissostitwihomx bħala strings bħal fil-grep, u għalhekk tkun meħlus mill-piż li taħrabhom bħala fil grep. Juża ERE jew is-sett ta' Espressjoni Regolari Estiża.

Fil-każ ta 'egrep, anki jekk ma taħrabx il-meta-karattri, tittrattahom bħala karattri speċjali u tissostitwixxihom għat-tifsira speċjali tagħhom minflok ma tittrattahom bħala parti minn spag.

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

Bħal hawn, egrep fittex is-string \file” meta l-meta-karattri ma ħarbux kif ikun ifisser bit-tifsira ta’ dawn il-karattri. Iżda, meta dawn il-karattri ġew maħruba, allura egrep trattathom bħala parti mis-sekwenza u mfittxija għal string kompluta \(f|g)ile” fil-fajl.

Fgrep jew il-grep Fiss jew grep -F hija verżjoni oħra ta 'grep li hija mgħaġġla fit-tfittxija meta tiġi biex tfittex is-sekwenza kollha minflok l-espressjoni regolari peress li ma tirrikonoxxix l-espressjonijiet regolari, la xi meta-karattri. Għat-tiftix ta 'kwalunkwe string dirett, din hija l-verżjoni ta' grep li għandha tintgħażel.

Fgrep ifittex sekwenza kompluta u lanqas biss jirrikonoxxi karattri speċjali bħala parti mill-espressjoni regolari anki jekk maħruba jew le.

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

Bħal, meta l-meta-karattri ma ħarbux, fgrep fittex is-sekwenza sħiħa \(f|g)ile” fil-fajl, u meta l-meta-karattri ġew maħruba, allura l-kmand fgrep fittex għal \\(f\|g\)ile” il-karattri kollha kif inhu fil-fajl.

Aħna diġà koprejna xi eżempji prattiċi ta 'kmand grep tista' taqrahom hawn, jekk trid tikseb aktar mill-kmand grep fil-Linux.

Konklużjoni

Hawn fuq enfasizzati huma d-differenzi bejn 'grep', 'egrep' u 'fgrep'. Minbarra d-differenza fis-sett ta’ espressjonijiet regolari użati, u l-veloċità tal-eżekuzzjoni, il-parametri tal-linja tal-kmand tal-mistrieħ jibqgħu l-istess għat-tliet verżjonijiet kollha ta’ grep u anke minflok \egrep” jew \fgrep”, \grep -E” jew \grep -F huma rakkomandati li jintużaw.

Jekk issib xi differenzi oħra bejn dawn it-tliet verżjonijiet tal-grep, semmihom fil-kummenti tiegħek.