Mitä eroa on Grepillä, Egrepillä ja Fgrepillä Linuxissa?

yksi Unixin kaltaisten järjestelmien tunnetuista hakutyökaluista, jolla voi etsiä mitä tahansa, olipa kyseessä tiedosto, rivi tai useita rivejä tiedostossa, on grep utility. Se on hyvin laaja toiminnallisuus, joka voidaan katsoa johtuvan suuri määrä vaihtoehtoja se tukee, kuten: haku käyttäen merkkijono kuvio, tai reg-ex kuvio tai perl perustuu reg-ex jne.

ero grep: n, egrep: n ja Fgrep: n välillä
ero grep: n, egrep: n ja Fgrep: n välillä Linuxissa

vaihtelevien toiminnallisuuksiensa vuoksi siitä on useita variantteja mm.grep, egrep (laajennettu grep), fgrep (kiinteä grep), pgrep (prosessi grep), rgrep (rekursiivinen grep) jne. Mutta nämä vaihtoehdot ovat pieniä eroja alkuperäiseen grep, joka on tehnyt niistä suosittuja ja käyttää eri Linux ohjelmoijat tiettyihin tehtäviin.

selvitettäväksi jää lähinnä se, mitkä ovat erot grep: n kolmen päävariantin eli ”grep”: n, ”egrep: n” ja ”fgrep: n” välillä, mikä saa Linux-käyttäjät valitsemaan yhden tai toisen version vaatimuksen mukaan.

joitakin grep: n erityisiä Metamerkkejä

  1. +-vastaa yhtä tai useampaa edellisen merkin esiintymää.
  2. ? – tämä tarkoittaa lähes yhtä toistoa aiemmasta merkistä. Like: a? vastaisi ”a: ta” tai ”aa: ta”.
  3. ( – vuorotteluilmaisun alku.
  4. ) – vaihtoilmaisun loppu.
  5. | – vastaa jompaakumpaa '|'. Like: "(a|b)cde” vastaisi joko ”abcde: tä” tai ”bbcde: tä”.
  6. { – tämä metamerkki ilmaisee alueen määrittelyn alun. Like: "a{2}” täsmää ”aa” tiedostoon eli a 2 kertaa.
  7. } – tämä metamerkki ilmaisee alueen lopun määrittelyn.

erot grep: n, egrep: n ja fgrep: n välillä

joitakin tärkeimpiä eroja grep: n, egrep: n ja fgrep: n välillä voidaan korostaa seuraavasti. Tämän joukon esimerkkejä oletamme tiedoston, johon toiminta suoritetaan on:

Linux grep Command
Linux grep Command

Grep Command

grep tai Global Regular Expression Print on Unixin kaltainen pääasiallinen hakuohjelma järjestelmät, jotka voivat etsiä minkä tahansa tyyppistä merkkijonoa mistä tahansa tiedostosta tai tiedostoluettelosta tai jopa minkä tahansa komennon ulostulosta.

ehdotettua luettavaa: 12 käytännön esimerkkiä Linux grep-komennosta

se käyttää Hakukuviona tavallisia Perusilmaisuja normaalien merkkijonojen lisäksi. Perussäännöllisissä lausekkeissa (BRE) metamerkkejä kuten: '{','}''(',')''|''+''?' menettävät merkityksensä ja niitä käsitellään normaaleina merkkijonon ja tarpeen merkkeinä paetaan, jos heitä kohdellaan erikoisina hahmoina.

ehdotettua luettavaa: 11 Advance ’Grep’-käskyä Hahmoluokissa ja kiinnikkeissä

myös grep käyttää Boyer-Moore-algoritmia minkä tahansa merkkijonon tai säännöllisen lausekkeen nopeaan hakuun.

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

Like here, when the command is run without escaping '(' ')' and '|' then it searched for the complete string i.e. "(f|g)ile” in the file. Mutta kun erikoismerkit pääsivät karkuun, grep ei käsitellyt niitä merkkijonon osana, vaan käsitteli niitä metamerkkeinä ja etsi tiedostosta sanoja "file” tai "gile”.

Egrep-komento

Egrep tai grep-E on toinen versio grep: stä tai laajennetusta grep: stä. Tämä versio grep on tehokas ja nopea, kun se tulee etsimään säännöllisen lausekkeen kuvio, koska se kohtelee meta-merkkejä kuin on ja ei korvaa niitä merkkijonoja kuten grep, ja siten olet vapautettu taakan paeta niitä kuin grep. Se käyttää ERE tai laajennettu säännöllinen lauseke joukko.

egrep: n tapauksessa se kohtelisi niitä erikoismerkkeinä ja korvaisi niiden erityisen merkityksen sen sijaan, että kohtelisi niitä merkkijonon osana.

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

Like here egrep etsi "file” merkkijonoa, kun metamerkkejä ei päässyt pakoon, kuten se tarkoittaisi näiden merkkien merkitystä. Mutta kun nämä merkit olivat karanneet, egrep käsitteli niitä merkkijonon osana ja etsi tiedostosta kokonaista merkkijonoa "(f|g)ile”.

Fgrep-komento

Fgrep tai kiinteä grep tai grep-F on jälleen yksi versio grep: stä, joka on nopea etsimään koko merkkijonoa säännöllisen lausekkeen sijaan, koska se ei tunnista säännöllisiä lausekkeita eikä metamerkkejä. Etsi mitään suoraa merkkijonoa, tämä on versio grep, joka pitäisi valita.

Fgrep etsii kokonaista merkkijonoa eikä edes tunnista erikoismerkkejä osaksi säännöllistä lauseketta, vaikka olisi paennut tai ei paennut.

$ fgrep -C 0 '(f|g)ile' check_file$ fgrep -C 0 '\(f\|g\)ile' check_file
Linux fgrep Command Examples
Linux Fgrep Command Examples

Like, kun metamerkkejä ei päässyt pakoon, fgrep etsi tiedostosta kokonaisen merkkijonon "(f|g)ile”, ja kun metamerkit olivat karanneet, niin fgrep-komento etsi "\(f\|g\)ile” kaikki merkit sellaisina kuin tiedostossa on.

olemme jo käsitelleet joitakin käytännön esimerkkejä grep-komennosta voit lukea ne täältä, jos haluat saada enemmän irti grep-komennosta Linuxissa.

Opi 12 käytännön esimerkkiä Linux grep-komennosta

johtopäätös

edellä korostetut erot ovat ”grep”, ”egrep” ja ”fgrep”. Käytettyjen säännöllisten lausekkeiden joukon erojen ja suoritusnopeuden lisäksi rest-komentoriviparametrit pysyvät samoina kaikilla grep: n kolmella versiolla ja jopa ”egrep”: n tai ”fgrep”: n sijasta suositellaan käytettäväksi ”grep-E”: tä tai ”grep-F”: tä.

Posted on

Vastaa

Sähköpostiosoitettasi ei julkaista.