Weboldal keresés

Mi a különbség a Grep, az Egrep és az Fgrep között Linuxban?


A grep segédprogram az egyik híres keresőeszköz a Unix-szerű rendszereken, amellyel bármire lehet keresni, legyen az egy fájl, egy sor vagy több sor a fájlban. Nagyon széles a funkcionalitása, ami a támogatott opciók nagy számának tudható be, mint például: keresés string mintával, reg-ex minta vagy perl alapú reg-ex stb.

Változó funkcióinak köszönhetően számos változata van, köztük a grep, az egrep (Kibővített GREP), az fgrep ( >Rögzített GREP), pgrep (GREP feldolgozása), rgrep (Rekurzív GREP) stb. De ezek a változatok kisebb eltéréseket mutatnak az eredeti grephez képest, amely népszerűvé tette őket, és különféle Linux-programozók által meghatározott feladatokhoz használták őket.

A legfontosabb dolog, amit még meg kell vizsgálni, az az, hogy mi a különbség a három fő változat, azaz a 'grep', 'egrep' és 'fgrep' között grep, amely arra készteti a Linux-felhasználókat, hogy a követelményeknek megfelelően válasszák az egyik vagy másik verziót.

Néhány speciális meta-karakter a grep

  1. + – Egyenértékű az előző karakter egy vagy több előfordulásával.
  2. ? – Ez az előző karakter majdnem 1 ismétlését jelöli. Például: a? Egyezne az 'a' vagy 'aa' kifejezéssel.
  3. ( – A váltakozó kifejezés kezdete.
  4. ) – A váltakozó kifejezés vége.
  5. | – A kifejezések bármelyikének egyezése '|'-val elválasztva. Például: „(a|b)cde ” az „abcde” vagy a „bbcde” egyezik.
  6. { – Ez a metakarakter a tartománymeghatározó kezdetét jelzi. Például: „a{2} ” megegyezik az „aa ”-val a fájlban, azaz a kétszer.
  7. } – Ez a metakarakter a tartomány végét jelöli.

A grep, egrep és fgrep közötti különbségek

A grep, az egrep és az fgrep közötti néhány fő különbség az alábbiak szerint kiemelhető. Ennél a példakészletnél feltételezzük, hogy a fájl, amelyen a műveletet végrehajtjuk, a következő:

Grep Command

A grep vagy a Global Regular Expression Print a fő keresőprogram a Unix-szerű rendszereken, amely bármilyen típusú karakterláncra képes keresni bármilyen fájlban vagy fájllistában, vagy akár bármely kimenet kimenetén. parancs.

Javasolt olvasmány: 12 gyakorlati példa a Linux grep parancsra

Keresési mintaként a normál karakterláncokon kívül Alap reguláris kifejezéseket használ. Az alapvető reguláris kifejezésekben (BRE) a metakarakterek, például: '{','}','(',')','|','+', '?' elvesztik jelentésüket, és a karakterlánc normál karaktereiként kezelik, és meg kell szabadítani őket, ha speciális karakterként kívánják kezelni őket .

Javasolt olvasmány: 11 speciális „Grep” parancs a karakterosztályokon és a zárójeles kifejezéseken

Ezenkívül a grep Boyer-Moore algoritmust használ bármilyen karakterlánc vagy reguláris kifejezés gyors kereséséhez.

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

Mint itt, amikor a parancs a '(' ')' és '|' kihagyása nélkül fut, akkor a teljes karakterláncot kereste, azaz: "(f|g )ile ” a fájlban. De amikor a speciális karaktereket kihagyták, akkor ahelyett, hogy egy karakterlánc részeként kezelte volna őket, a grep metakarakterként kezelte őket, és a “fájl ” vagy a „gile ” szavakra keresett. a fájlban.

Egrep parancs

Az Egrep vagy a grep -E a grep vagy a kiterjesztett grep egy másik változata. A grep ezen verziója hatékony és gyors, ha reguláris kifejezésmintát kell keresni, mivel a metakaraktereket úgy kezeli, ahogy vannak, és nem helyettesíti azokat karakterláncokként, mint a grepben, így megszabadulhat attól a tehertől, hogy elkerülje őket. grepben. ERE-t vagy az Extended Regular Expression készletet használja.

Az egrep esetében még ha nem is kerüli el a metakaraktereket, az speciális karakterként kezeli őket, és a sajátos jelentésükkel helyettesíti őket, ahelyett, hogy karakterlánc részeként kezelné őket.

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

Ahogy itt is, az egrep a “file ” karakterláncra keresett, amikor a metakarakterek nem kerültek kihagyásra, ahogy azt ezeknek a karaktereknek a jelentése jelentené. Amikor azonban ezeket a karaktereket kihagyták, az egrep a string részeként kezelte őket, és a teljes “(f|g)ile ” karakterláncot kereste a fájlban.

fgrep parancs

Az Fgrep vagy a Rögzített grep vagy a grep -F a grep egy újabb verziója, amely gyors keresést tesz lehetővé, ha a teljes karakterláncot kell keresni. reguláris kifejezés helyett, mivel nem ismeri fel a reguláris kifejezéseket, sem metakaraktereket. Bármely közvetlen karakterlánc kereséséhez a grepnek ezt a verzióját kell kiválasztani.

Az Fgrep a teljes karakterláncot keresi, és még akkor sem ismeri fel a speciális karaktereket a reguláris kifejezés részeként, ha kihagyott vagy nem menekült.

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

Például, amikor a metakarakterek nem kerültek kihagyásra, az fgrep a teljes “(f|g)ile ” karakterláncot kereste a fájlban, és amikor a metakarakterek kikerültek, akkor az fgrep parancs a következőt kereste: „\(f\|g\)ile ” minden karakter a fájlban.

Már bemutattunk néhány gyakorlati példát a grep parancsra, ezeket itt olvashatja el, ha többet szeretne kihozni a grep parancsból Linux alatt.

Tanuljon meg 12 gyakorlati példát a Linux grep parancsra

Következtetés

A fentiekben kiemelve láthatók a „grep”, az „egrep” és az „fgrep” közötti különbségek. A használt reguláris kifejezések készletében és a végrehajtás sebességében mutatkozó különbségektől eltekintve a többi parancssori paraméter ugyanaz marad a grep mindhárom verziójában, sőt az „egrep” vagy „fgrep”, „grep -E” vagy „grep” helyett is. F ” használata javasolt.

Ha bármilyen más különbséget talál a grep e három verziója között, említse meg őket megjegyzéseiben.