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
+
– Egyenértékű az előző karakter egy vagy több előfordulásával.?
– Ez az előző karakter majdnem 1 ismétlését jelöli. Például:a?
Egyezne az 'a' vagy 'aa' kifejezéssel.(
– A váltakozó kifejezés kezdete.)
– A váltakozó kifejezés vége.|
– A kifejezések bármelyikének egyezése'|'
-val elválasztva. Például:„(a|b)cde ”
az „abcde” vagy a „bbcde” egyezik.{
– 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.}
– 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.