Wat is het verschil tussen Grep, Egrep en Fgrep in Linux?

een van de gerenommeerde zoekgereedschappen op Unix-achtige systemen die gebruikt kunnen worden om naar alles te zoeken, of het nu een bestand is, of een regel of meerdere regels in een bestand is grep utility. Het is zeer uitgebreid in functionaliteit die kan worden toegeschreven aan het grote aantal opties die het ondersteunt, zoals: zoeken met behulp van string patroon, of reg-ex patroon of Perl gebaseerde reg-ex etc.

Verschil Tussen grep, egrep en fgrep
Verschil Tussen grep, egrep en fgrep in Linux

Dankzij de vele functionaliteiten, het heeft vele varianten, waaronder grep, egrep (Extended GREP), fgrep (Vaste GREP), pgrep (Proces GREP), rgrep (Recursieve GREP), enz. Maar deze varianten hebben kleine verschillen met de originele grep waardoor ze populair zijn en door verschillende Linux programmeurs gebruikt kunnen worden voor specifieke taken.

Het belangrijkste dat nog onderzocht moet worden is wat de verschillen zijn tussen de drie hoofdvarianten i.e. ‘grep’, ‘egrep’ en ‘fgrep’ van grep waardoor Linux gebruikers de ene of de andere versie kiezen volgens de vereiste.

enkele speciale meta-karakters van grep

  1. + – gelijk aan een of meer exemplaren van vorig teken.
  2. ? – dit duidt op bijna 1 herhaling van het vorige teken. Zoals: a? zou overeenkomen met ‘a’ of ‘aa’.
  3. ( – begin van de afwisseling.
  4. ) – einde van de afwisseling.
  5. | – komt overeen met een van de uitdrukkingen gescheiden door '|'. Zoals: "(a|b)cde” zou overeenkomen met ‘abcde’ of ‘bbcde’.
  6. { – dit meta-teken geeft het begin van de range specifier aan. Zoals: "a{2}” komt overeen met” aa ” in bestand dat wil zeggen 2 keer.
  7. } – dit meta-teken geeft het einde van het bereik aan.

verschillen tussen grep, egrep en fgrep

enkele belangrijke verschillen tussen grep, egrep en fgrep kunnen als volgt worden gemarkeerd. Voor deze set van voorbeelden gaan we ervan uit dat het bestand waarop de operatie wordt uitgevoerd:

Linux grep Commando
Linux grep Commando

Grep Commando

grep of globale Reguliere Expressie Print is het belangrijkste zoekprogramma op Unix-achtige systemen dat kan zoeken naar elk type string op een bestand of lijst van bestanden of zelfs output van een commando.

voorgestelde Read: 12 praktische voorbeelden van Linux grep Commando

het gebruikt standaard reguliere expressies behalve normale strings als een zoekpatroon. In basis reguliere expressies (BRE), meta-karakters zoals: '{','}''(',')''|''+''?' verliezen hun betekenis en worden behandeld als normale tekens van string en moeten worden escaped als ze worden behandeld als speciale karakters.

voorgestelde Read: 11 vooraf ‘Grep’ commando ‘ s op karakter klassen en Bracket expressies

ook gebruikt grep Boyer-Moore algoritme voor het snel zoeken naar een string of reguliere expressie.

$ 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. Maar toen de speciale karakters waren ontsnapt, behandelde grep ze niet als onderdeel van een string, maar als meta-karakters en zocht naar woorden "file” of "gile” in het bestand.

Egrep Commando

Egrep of grep-E is een andere versie van grep of de uitgebreide grep. Deze versie van grep is efficiënt en snel als het gaat om het zoeken naar een reguliere expressie patroon als het behandelt meta-karakters zoals is en vervangt ze niet als strings zoals in grep, en dus bent u bevrijd van de last van het ontsnappen van hen als in grep. Het gebruikt ERE of de Extended Regular Expression set.

in het geval van egrep, zelfs als je niet ontsnapt aan de meta-karakters, zou het ze behandelen als speciale karakters en ze vervangen voor hun speciale betekenis in plaats van ze te behandelen als onderdeel van een string.

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

zoals hier, egrep zocht naar "file” string wanneer de meta-karakters niet werden escaped zoals het zou betekenen met de Betekenis van deze karakters. Maar toen deze karakters waren ontsnapt, behandelde egrep ze als onderdeel van string en zocht naar volledige string "(f|g)ile” in het bestand.

fgrep Commando

Fgrep of de vaste grep of grep-F is nog een andere versie van grep die snel is in het zoeken naar de hele string in plaats van reguliere expressie omdat het de reguliere expressies niet herkent, noch enige meta-tekens. Voor het zoeken naar een directe tekenreeks, is dit de versie van grep die moet worden geselecteerd.

Fgrep zoekt naar volledige tekenreeks en herkent zelfs geen speciale tekens als onderdeel van reguliere expressie, zelfs niet als escaped of niet escaped.

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

als meta-tekens zijn niet ontsnapt, fgrep gezocht voor de volledige tekenreeks "(f|g)ile” in het bestand, en als de meta-karakters ontkomen waren, toen de fgrep opdracht gezocht "\(f\|g\)ile” alle tekens in het bestand.

we hebben al enkele praktische voorbeelden van het grep Commando besproken die je hier kunt lezen, als je meer uit het grep commando in Linux wilt halen.

leer 12 praktische voorbeelden van Linux grep Commando

conclusie

hierboven zijn de verschillen tussen ‘grep’, ‘egrep’ en ‘fgrep’gemarkeerd. Afgezien van het verschil in de set van reguliere expressies gebruikt, en de snelheid van uitvoering, rest command line parameters blijven hetzelfde voor alle drie versies van grep en zelfs in plaats van “egrep” of “fgrep”, “grep-E” of “grep-F” worden aanbevolen om te worden gebruikt.

Posted on

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.