Hoe Grep Command in Linux te gebruiken

Het grep-commando begrijpen met praktische voorbeelden om eenvoudig de bestandsinhoud te filteren en weer te geven

GREP staat voor 'Global Regular Expression Print'. Het is een handig opdrachtregelprogramma dat door Linux wordt geleverd om te zoeken naar de tekstregel die overeenkomt met het patroon dat door de gebruiker is opgegeven.

grep neemt de invoer van de gebruiker in de vorm van strings of woorden die de gebruiker wil zoeken in een bepaald bestand. De opdracht controleert vervolgens het bestand dat door de gebruiker is opgegeven voor dit patroon en retourneert vervolgens de regels die overeenkomen met het opgegeven patroon.

Het doet uitstekend werk door de inhoud van een bestand te filteren, waardoor het onze taak gemakkelijker wordt om bepaalde inhoud op één of meerdere bestanden tegelijk te doorzoeken.

Laten we in dit artikel de werking van de grep commando met enkele praktische voorbeelden in detail.

Opties beschikbaar met grep opdracht

Dit zijn enkele van de fundamentele opties die u vaak zult gebruiken met de grep opdracht.

OptieBeschrijving
-IVoor een hoofdletterongevoelige zoekopdracht
-RRecursief zoeken naar alle bestanden in de opgegeven map en zijn submappen
-COm het totale aantal keren dat een tekenreeks verschijnt weer te geven
-vOm de niet-overeenkomende lijnen weer te geven
-wFilter op dat specifieke woord dat apart wordt gebruikt

De ... gebruiken grep opdracht

grep commando wordt meestal gebruikt met de pijp (|) nutsvoorziening. Het kan worden geïmplementeerd met de shell-pipe als je het wilt gebruiken met een aantal andere Linux-commando's. Hoewel, grep kan ook afzonderlijk worden gebruikt zonder de buis (|) nutsvoorziening.

Laten we eens kijken naar enkele van de basissyntaxis van de grep commando met en zonder het hulpprogramma pipe.

Laat me je eerst het voorbeeldtekstbestand laten zien dat ik zal gebruiken om de grep opdracht.

INDIA IS EEN MOOI LAND VAN VREDE LIEFDEVOLLE MENSEN. India staat op drie pijlers van wetgevende, uitvoerende en rechterlijke macht. India is een prachtig land van vredelievende mensen. India geeft om de mensen, omdat het de cartesische coördinaten van de grondstof is, het belang van alle cartesische coördinaten. Hierna volgen twee lege regels. het gebruik van een ossenkar is een veelvoorkomend verschijnsel in het dorp voor het agrarische karwei. Dit is het einde van het voorbeeldbestand.

grep gebruikt met pijp ( | )nutsvoorziening

grep commando kan samen met andere Linux-commando's worden geïmplementeerd met behulp van de shell-pipes. Zoals, met behulp van de kat commando om de inhoud van het bestand weer te geven, maar tegelijkertijd de uitvoer door te sturen met de grep commando om alleen de inhoud weer te geven die u wilt zien. Dit wordt duidelijker als we het voorbeeld doornemen.

Syntaxis:

[opdracht] | grep [string]

Voorbeeld:

kat voorbeeld.txt | grep wetgevende macht

Hier heb ik de kat commando om enkele regels uit het bestand 'sample.txt' weer te geven. Alleen die regels moeten worden weergegeven waarin het woord ‘wetgevende macht’ staat en negeer de rest van de regels.

Uitgang::

gaurav@ubuntu:~/workspace$ cat sample.txt | grep wetgevende macht india staat op drie pijlers van de wetgevende macht, de uitvoerende macht en de rechterlijke macht. gaurav@ubuntu:~/werkruimte$

grep gebruikt zonder pijp ( | )nutsvoorziening

grep kan zelfs direct worden gebruikt als een individuele opdracht zonder de pijp te gebruiken ( | ) nutsvoorziening.

Syntaxis:

grep [string_to_be_searched] [bestandsnaam]

Voorbeeld:

grep India voorbeeld.txt

Uitgang::

India is een prachtig land van vredelievende mensen. India geeft om de mensen als hulpbron

Zo heb ik de grep commando om de regels die de string ‘India’ bevatten uit het tekstbestand ‘sample.txt’ te filteren.

Hoofdletterongevoelig zoeken met grep opdracht

Linux is erg voorzichtig met de hoofdlettergevoeligheid wanneer we de opdrachten op de terminal uitvoeren. Dit vereist dat de gebruiker voorzichtig is met het geval van de tekenreeks die in de opdracht wordt geplaatst.

Laten we dit aan de hand van een voorbeeld bekijken.

grep vrede sample.txt

In dit geval krijgen we geen uitvoer omdat er geen woord als 'vrede' in het voorbeeldbestand voorkomt. We hebben het woord 'Vrede' met een hoofdletter 'P'. Het woord is hetzelfde, maar wanneer we de . gebruiken grep commando zonder enige optie, zoekt het naar de exacte overeenkomst in het bestand, waarbij eventuele wijzigingen in de letterkast buiten beschouwing worden gelaten.

Om deze dubbelzinnigheid te voorkomen, kunt u eenvoudig de -I optie die letterlijk de . vertelt grep opdracht "Vergeet de zaak waarin ik de string heb geplaatst en zoek gewoon naar alle overeenkomende patronen in het bestand."

Syntaxis:

grep -i [string] [bestandsnaam]

Voorbeeld:

grep -i vrede sample.txt

Uitgang::

INDIA IS EEN MOOI LAND VAN VREDE LIEFDEVOLLE MENSEN. India is een prachtig land van vredelievende mensen.

Alle overeenkomende regels worden weergegeven, ongeacht het geval waarin de overeenkomende tekenreeks zich bevindt.

Recursief zoeken met grep opdracht

De -R optie zoekt naar alle bestanden in een map en alle submappen die overeenkomen met het tekenreekspatroon dat door de gebruiker in de opdracht is opgegeven.

Syntaxis:

grep -i -r [tekenreeks] [bestandspad]

Voorbeeld:

grep -i -r kater /home/gaurav/werkruimte

De string hier is 'tomcat' en deze zal worden doorzocht in de directory-werkruimte. Alle submappen en bestanden in de map 'werkruimte' worden ook gescand om overeen te komen met het opgegeven tekenreekspatroon.

Uitgang::

./context_log.policy:// catalina.policy - Beveiligingsbeleidsmachtigingen voor Tomcat 7 ./context_log.policy:// Opmerking: als tomcat-juli.jar in ${catalina.base} staat en niet in ${catalina.home }, ./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "file:${catalina.home }/bin/tomcat-juli.jar" { ./context_log.policy: toestemming java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JARs ./catalina.properties:# - Tomcat API JARs ./catalina.properties:# - Tomcat JARs ./catalina.properties:# - Veelvoorkomende niet-Tomcat JARs ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina.properties:# tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000 . /server.xml: padnaam="conf/tomcat-users.xml" /> ./server.xml: 

NOTITIE: Tijdens het gebruik van de -R optie met de grep commando moeten we het pad van het bestand opgeven en niet de bestandsnaam

Alleen hele woorden zoeken met grep opdracht

Vaak is het zo dat u naar één woord zoekt, maar dat u uiteindelijk uw terminal vult met de overeenkomende regels die uw overeenkomende woord wel bevatten, maar niet als een afzonderlijk woord. Mogelijk ziet u de regels die enkele woorden bevatten waarvan het subgedeelte de tekenreeks is die u hebt ingevoerd.

Verward hiermee? Maak je geen zorgen, het is veel gemakkelijker te begrijpen als je het voorbeeld eenmaal hebt.

Voorbeeld:

Hier wil ik een afzonderlijk woord 'cart' zoeken en alle regels weergeven die overeenkomen met dit woord in het bestand 'sample.txt'.

grep -i winkelwagen sample.txt

Uitgang::

Cartesiaanse coördinaten belang van alle Cartesiaanse coördinaten. het gebruik van een ossenkar is een veelvoorkomend verschijnsel in het dorp voor het agrarische werk. De kar werd vermist toen de jongen hem losliet.

In de uitvoer kunt u zien dat het woord 'Cartesian' ook het woord 'cart' bevat en daarom worden de regels met het woord 'Cartesian' ook weergegeven, ook al willen we niet dat ze worden weergegeven.

U kunt de -w optie met de grep opdracht om deze dubbelzinnigheid op te lossen.

Syntaxis:

grep -i -w [tekenreeks] [bestandsnaam]

Voorbeeld:

grep -i -w winkelwagen sample.txt

Uitgang::

het gebruik van een ossenkar is een veelvoorkomend verschijnsel in het dorp voor het agrarische karwei. De kar werd vermist toen de jongen hem los liet. 

Nu, wanneer u de -met wie optie met grep u krijgt alleen de regels waarin het woord 'kar' in zijn geheel wordt gebruikt.

Omgekeerd zoeken met grep opdracht

grep commando kan ook omgekeerd worden gebruikt. We kunnen de grep het tegenovergestelde commando door de overeenkomende regels te verbergen en alleen de regels weer te geven waar de overeenkomst niet is gevonden. U kunt dit doen met behulp van de -v optie met de grep opdracht.

Syntaxis:

grep -i -v [tekenreeks] [bestandsnaam]

Voorbeeld:

grep -i -v resource sample.txt

Uitgang::

INDIA IS EEN MOOI LAND VAN VREDE LIEFDEVOLLE MENSEN. India staat op drie pijlers van wetgevende, uitvoerende en rechterlijke macht. India is een prachtig land van vredelievende mensen. cartesische coördinaten belang van alle cartesische coördinaten. het gebruik van een ossenkar is een veelvoorkomend verschijnsel in het dorp voor het agrarische karwei. Dit is het einde van het voorbeeldbestand.

In de uitvoer worden alle andere regels weergegeven, behalve de regel die het woord 'resource' bevat.

Voorvallen tellen van overeenkomende tekenreeksen

De uitvoer van de grep commando is meestal erg lang als de gegevens in het bestand uitgebreid zijn. Hoe meer overeenkomsten, hoe langer de uitgangen van de grep opdracht. Linux biedt u een optie waarmee u het aantal keren dat de overeenkomst voorkomt kunt weergeven.

Syntaxis:

grep -i -c [tekenreeks] [bestandsnaam]

Voorbeeld:

grep -i -c india voorbeeld.txt

Uitgang::

gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$

Hier is de uitvoer een getal, het aantal keren dat het woord 'India' in het bestand sample.txt voorkomt.

NOTITIE: Ik heb de gebruikt -I optie in elk voorbeeld om gewoon veilig te zijn met het probleem met hoofdlettergevoeligheid. Als u zeker bent van de naamval van het woord waarnaar u zoekt, kunt u de weglaten -I optie.

Gevolgtrekking

We hebben de fundamentele toepassingen van de grep commando op de Linux-systemen in deze tutorial. We hebben ook geleerd om verschillende inhoud weer te geven die het beste bij onze eisen past en de terminal niet vol te proppen met rijen lijnen. grep commando zal zeker tijd besparen als het wordt gebruikt voor het scannen van grote datasets.