Menene Bambanci Tsakanin Grep, Egrep da Fgrep a cikin Linux?


Ɗaya daga cikin mashahurin kayan aikin bincike akan tsarin Unix-kamar wanda za'a iya amfani dashi don bincika wani abu ko fayil ne, ko layi ko layi daya a cikin fayil shine grep utility. Yana da faɗi sosai a cikin ayyuka wanda za'a iya danganta shi da ɗimbin zaɓuɓɓukan da yake tallafawa kamar: bincike ta amfani da ƙirar kirtani, ko tsarin reg-ex ko perl tushen reg-ex da dai sauransu.

Saboda ayyukansa daban-daban, yana da bambance-bambancen da yawa ciki har da grep, egrep (Extended GREP), fgrep (Fixed GREP), pgrep (Tsarin GREP), rgrep (Recursive GREP) da dai sauransu. mashahuri kuma masu shirye-shiryen Linux daban-daban za su yi amfani da su don takamaiman ayyuka.

Babban abin da ya rage a bincika shi ne menene bambance-bambancen da ke tsakanin manyan bambance-bambancen guda uku wato 'grep', 'egrep' da 'fgrep' na grep wanda ke sa masu amfani da Linux su zaɓi ɗaya ko ɗayan sigar kamar yadda ake buƙata.

Wasu Meta-Halayen Musamman na grep

  1. + - Daidai da ɗaya ko fiye da abubuwan da suka faru na haruffan da suka gabata.
  2. ? - Wannan yana nuna kusan maimaita harafi 1 na baya. Kamar: a? Zai dace da 'a' ko 'aa'.
  3. ( - Farkon maganar canji.
  4. ) - Ƙarshen magana.
  5. | - Daidaita ko ɗaya daga cikin kalmomin da aka raba ta |. Kamar: \(a|b)cde zai dace da ko dai 'abcde' ko 'bbcde'.
  6. { - Wannan meta-hali yana nuna farkon kewayon kewayon. Kamar: \a{2} yayi daidai da \aa a cikin fayil watau sau 2.
  7. } - Wannan meta-hali yana nuna ƙarshen kewayo.

Bambance-bambance tsakanin grep, egrep da fgrep

Wasu manyan bambance-bambance tsakanin grep, egrep da fgrep ana iya haskaka su kamar haka. Don wannan misalan misalan muna ɗaukar fayil ɗin da ake aiwatar da shi ya zama:

grep ko Global Regular Expression Print shine babban shirin bincike akan tsarin Unix-kamar wanda zai iya nemo kowane nau'in kirtani akan kowane fayil ko jerin fayiloli ko ma fitarwa na kowane umarni.

Yana amfani da Maganganun Asali na yau da kullun ban da igiyoyi na yau da kullun azaman ƙirar bincike. A Basic Regular Expressions (BRE), meta-haruffa kamar: {,}, (,) , | , +,? suna kwance ma'anarsu kuma ana ɗaukar su azaman haruffan kirtani na yau da kullun kuma suna buƙatar tserewa idan ana son a ɗauke su azaman haruffa na musamman.

Har ila yau, grep yana amfani da Boyer-Moore algorithm don neman sauri kowane kirtani ko magana ta yau da kullum.

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

Kamar a nan, lokacin da umurnin ke gudana ba tare da tserewa ( ) da | ba sai ya nemo cikakken kirtani watau \(f|g)ile a cikin fayil. Amma lokacin da haruffan na musamman suka tsere, to, maimakon ɗaukar su azaman ɓangare na kirtani, grep ya ɗauke su azaman meta-haruffa kuma ya nemo kalmomi \file ko \gile a cikin fayil.

Egrep ko grep -E wani sigar grep ne ko Extended grep. Wannan sigar grep yana da inganci kuma yana da sauri idan ya zo ga neman tsarin magana na yau da kullun kamar yadda yake bi da meta-haruffa kamar yadda yake kuma baya musanya su azaman kirtani kamar a cikin grep, don haka an kuɓutar da ku daga nauyin tserewa su. in grep. Yana amfani da ERE ko Ƙararren Ƙwararren Ƙwararren Ƙwararren Ƙwararru.

Idan akwai egrep, ko da ba ku tsere wa meta-haruffa ba, zai ɗauke su a matsayin haruffa na musamman kuma zai maye gurbin su da ma'anarsu ta musamman maimakon ɗaukar su azaman ɓangaren kirtani.

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

Kamar a nan, egrep ya nemo kirtani \file lokacin da meta-harufan ba su tsere ba kamar yadda ake nufi da ma'anar waɗannan haruffa. wani ɓangare na kirtani kuma a nemo cikakken kirtani \(f|g)ile a cikin fayil ɗin.

Fgrep ko Kafaffen grep ko grep -F har yanzu wani nau'in grep ne wanda ke da sauri a cikin nema lokacin da ya zo don nemo duk kirtani maimakon magana ta yau da kullun kamar yadda ba ta gane maganganun yau da kullun ba, ko kowane meta-haruffa. Don bincika kowane kirtani kai tsaye, wannan sigar grep ce wacce yakamata a zaɓa.

Fgrep yana neman cikakken kirtani kuma baya gane haruffa na musamman a matsayin wani ɓangare na magana ta yau da kullun ko da ya tsere ko a'a.

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

Kamar, lokacin da meta-haruffa ba su tsira ba, fgrep ya nemo cikakkiyar kirtani \(f|g)ile a cikin fayil ɗin, kuma lokacin da meta-harufan suka tsere, sai umarnin fgrep ya bincika. don \\(f\|g\)ile duk haruffa kamar yadda yake cikin fayil ɗin.

Mun riga mun rufe wasu misalai masu amfani na umarnin grep za ku iya karanta su anan, idan kuna son samun ƙarin ƙarin umarnin grep a cikin Linux.

Kammalawa

Abubuwan da ke sama sune bambance-bambance tsakanin 'grep', 'egrep' da 'fgrep'. Baya ga bambance-bambance a cikin saitin maganganun yau da kullun da ake amfani da su, da saurin aiwatarwa, sauran sigogin layin umarni sun kasance iri ɗaya ga duk nau'ikan grep guda uku har ma maimakon \egrep ko \fgrep, \grep -E ko \grep -F ana bada shawarar yin amfani da su.

Idan kun sami wasu bambance-bambance tsakanin waɗannan nau'ikan grep guda uku, ku ambaci su a cikin maganganunku.