Unsa ang Kalainan Tali sa Grep, Egrep ug Fgrep sa Linux?


Usa sa bantog nga himan sa pagpangita sa mga sistema nga sama sa Unix nga magamit sa pagpangita sa bisan unsa kung kini usa ka file, o usa ka linya o daghang linya sa file mao ang grep utility. Lapad kaayo kini sa pag-andar nga mahimong ipahinungod sa daghang mga kapilian nga gisuportahan niini sama sa: pagpangita gamit ang pattern sa string, o reg-ex pattern o perl based reg-ex etc.

Tungod sa lain-laing mga gamit niini, kini adunay daghang mga variant lakip na ang grep, egrep (Extended GREP), fgrep (Fixed GREP), pgrep (Process GREP), rgrep (Recursive GREP) ug uban pa. Apan kini nga mga variant adunay gamay nga kalainan sa orihinal nga grep nga naghimo kanila popular ug gamiton sa nagkalain-laing mga programmer sa Linux para sa piho nga mga buluhaton.

Ang panguna nga butang nga kinahanglan pa nga imbestigahan mao kung unsa ang mga kalainan tali sa tulo nga mga nag-unang variant ie 'grep', 'egrep' ug 'fgrep' sa grep nga naghimo sa mga tiggamit sa Linux nga mopili sa usa o sa lain nga bersyon sumala sa kinahanglanon.

Pipila ka Espesyal nga Meta-Mga Karakter sa grep

  1. + – Katumbas sa usa o daghan pang panghitabo sa miaging karakter.
  2. ? – Kini nagpasabot sa hapit 1 nga pagbalik-balik sa miaging karakter. Sama sa: a? Mopares sa 'a' o 'aa'.
  3. ( – Pagsugod sa alternation expression.
  4. ) – Katapusan sa alternation expression.
  5. | – Pagpares sa bisan hain sa ekspresyon nga gibulag sa |. Sama sa: \(a|b)cde motakdo sa 'abcde' o 'bbcde'.
  6. { – Kini nga meta-character nagpaila sa pagsugod sa range specifier. Sama sa: \a{2}” motakdo sa \aa” sa file i.e. a 2 ka beses.
  7. } – Kini nga meta-character nagpaila sa katapusan sa range specifier.

Mga Kalainan Tali sa grep, egrep ug fgrep

Ang pipila ka mga nag-unang kalainan tali sa grep, egrep ug fgrep mahimong ma-highlight sama sa mosunod. Alang sa kini nga hugpong sa mga pananglitan atong gihunahuna nga ang file diin gihimo ang operasyon nga:

Ang grep o Global Regular Expression Print mao ang nag-unang programa sa pagpangita sa mga sistema nga sama sa Unix nga makapangita sa bisan unsang matang sa string sa bisan unsang file o listahan sa mga file o bisan sa output sa bisan unsang command.

Gigamit niini ang Basic Regular Expressions gawas sa normal nga mga string isip pattern sa pagpangita. Sa Basic Regular Expressions (BRE), meta-character sama sa: {,},(,),|,+,? mawala ang ilang kahulogan ug isipon nga normal nga mga karakter sa hilo ug kinahanglan nga i-eskapo kung kini isipon nga espesyal nga mga karakter.

Usab, ang grep naggamit sa Boyer-Moore algorithm alang sa paspas nga pagpangita sa bisan unsang string o regular nga ekspresyon.

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

Sama dinhi, sa dihang ang sugo gipadagan nga walay pag-ikyas ( ) ug | nan kini nangita sa kompletong string ie \(f|g)ile” sa file. Apan sa dihang ang mga espesyal nga karakter nakaikyas, unya imbes nga isipon sila isip bahin sa string, gitratar sila sa grep isip mga meta-character ug gipangita ang mga pulong \file o \gile sa file.

Ang Egrep o grep -E maoy laing bersyon sa grep o ang Extended grep. Kini nga bersyon sa grep episyente ug paspas kung bahin sa pagpangita alang sa usa ka regular nga pattern sa ekspresyon tungod kay kini nagtagad sa mga meta-karakter sama sa kung unsa ug wala kini gipulihan ingon mga kuwerdas sama sa grep, ug busa gilingkawas ka gikan sa palas-anon sa pag-ikyas kanila ingon nga sa grep. Gigamit niini ang ERE o ang Extended Regular Expression set.

Sa kaso sa egrep, bisan kung dili ka makaikyas sa mga meta-karakter, kini magtagad kanila ingon mga espesyal nga karakter ug ilisan kini sa ilang espesyal nga kahulugan imbis nga pagtratar sila ingon bahin sa hilo.

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

Sama dinhi, gipangita ni egrep ang \file string sa dihang ang mga meta-character wala maka-eskapo ingon nga kini nagpasabot sa kahulogan niini nga mga karakter. bahin sa string ug gipangita ang kompleto nga string \(f|g)ile” sa file.

Ang Fgrep o ang Fixed grep o grep -F usa pa ka bersyon sa grep nga paspas sa pagpangita kung bahin sa pagpangita sa tibuuk nga string imbis nga regular nga ekspresyon tungod kay wala kini makaila sa mga regular nga ekspresyon, ni bisan unsang meta-karakter. Alang sa pagpangita sa bisan unsang direkta nga hilo, kini ang bersyon sa grep nga kinahanglan pilion.

Ang Fgrep nangita alang sa kompleto nga string ug wala gani makaila sa mga espesyal nga karakter isip bahin sa regular nga ekspresyon bisan kung nakaikyas o wala nakaikyas.

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

Sama sa, sa dihang ang meta-character wala makaikyas, ang fgrep nangita sa kompletong string \(f|g)ile” sa file, ug sa dihang ang meta-character na-eskapo, unya ang fgrep command nangita para sa \\(f\|g\)ile” tanang karakter sama sa naa sa file.

Gitabonan na namo ang pipila ka praktikal nga mga pananglitan sa grep command nga imong mabasa dinhi, kung gusto nimo nga makakuha og dugang gikan sa grep command sa Linux.

Konklusyon

Sa ibabaw nga gipasiugda mao ang mga kalainan tali sa 'grep', 'egrep' ug 'fgrep'. Gawas sa kalainan sa hugpong sa mga regular nga ekspresyon nga gigamit, ug katulin sa pagpatuman, ang mga parametro sa linya sa command sa pahulay nagpabilin nga pareho alang sa tanan nga tulo nga mga bersyon sa grep ug bisan sa baylo nga \egrep o \fgrep, \grep -E o \grep -F girekomendar nga gamiton.

Kung nakit-an nimo ang bisan unsang mga kalainan tali niining tulo nga mga bersyon sa grep, isulti kini sa imong mga komento.