Sådan bruges Grep Command i Linux

Forståelse af grep-kommando med praktiske eksempler for nemt at filtrere og vise filindholdet

GREP står for 'Global Regular Expression Print'. Det er et nyttigt kommandolinjeværktøj leveret af Linux, til at søge efter den tekstlinje, der matcher det mønster, som brugeren leverer.

grep tager input fra brugeren i form af strenge eller ord, som brugeren ønsker at søge i en bestemt fil. Kommandoen kontrollerer derefter filen specificeret af brugeren for dette mønster og returnerer derefter de linjer, der matcher det angivne mønster.

Det gør et fremragende stykke arbejde ved at filtrere indholdet af en fil, hvilket gør vores opgave lettere at søge efter bestemt indhold på enkelte eller flere filer samtidigt.

Lad os i denne artikel gennemgå funktionen af grep kommando med nogle praktiske eksempler i detaljer.

Muligheder tilgængelige med grep kommando

Dette er nogle af de grundlæggende muligheder, du ofte vil bruge med grep kommando.

MulighedBeskrivelse
-jegFor en søgning uden store og små bogstaver
-rAt søge rekursivt efter alle filerne i den angivne mappe og dens undermapper
-cFor at vise det samlede antal gange, en streng vises
-vFor at vise de ikke-matchende linjer
-wFiltrer efter det pågældende ord, der bruges separat

Bruger grep kommando

grep kommandoen bruges normalt sammen med røret (|) nytte. Det kan implementeres med shell-pipen, når du vil bruge det med nogle andre Linux-kommandoer. Selvom, grep kan også bruges enkeltvis uden rør (|) nytte.

Lad os se på nogle af de grundlæggende syntakser i grep kommando med og uden rørværktøjet.

Lad mig først vise dig prøvetekstfilen, jeg vil bruge til at illustrere grep kommando.

INDIEN ER ET SMUKKT LAND MED FREDELSKE MENNESKER. Indien står på tre søjler af lovgivende, udøvende og dømmende magt. Indien er et smukt land med fredselskende mennesker. Indien bekymrer sig om folket, da dets ressource kartesiske koordinater betydningen af ​​alle de kartesiske koordinater. Følgende er to tomme linjer. brug af en oksevogn er et almindeligt syn i landsbyen til de agrariske gøremål. Dette er slutningen af ​​eksempelfilen.

grep brugt med rør ( | )nytte

grep kommandoen kan implementeres sammen med andre Linux-kommandoer ved hjælp af shell-pipes. Ligesom ved at bruge kat kommando for at vise indholdet af filen, men samtidig overføre outputtet ved hjælp af grep kommando til kun at vise det indhold, du ønsker at se. Dette vil være mere tydeligt, når vi gennemgår eksemplet.

Syntaks:

[kommando] | grep [streng]

Eksempel:

kat sample.txt | grep lovgiver

Her har jeg brugt kat kommando for at vise nogle linjer fra 'sample.txt'-filen. Kun de linjer skal vises, som indeholder ordet "lovgiver" og ignorerer resten af ​​linjerne.

Produktion:

gaurav@ubuntu:~/workspace$ kat sample.txt | grep legislature india står på tre søjler af lovgivende magt, udøvende og dømmende magt. gaurav@ubuntu:~/workspace$

grep brugt uden rør ( | )nytte

grep kan endda bruges direkte som en individuel kommando uden at bruge røret ( | ) nytte.

Syntaks:

grep [string_to_be_searched] [filnavn]

Eksempel:

grep Indien sample.txt

Produktion:

Indien er et smukt land med fredselskende mennesker. Indien bekymrer sig om folket som dets ressource

Jeg har således brugt grep kommando direkte for at filtrere de linjer, der indeholder strengen 'India' fra tekstfilen 'sample.txt'.

Uafhængig søgning vha grep kommando

Linux er meget forsigtig med case-sensitiviteten, når vi affyrer kommandoerne på terminalen. Dette kræver, at brugeren er forsigtig med tilfældet af strengen, der er lagt i kommandoen.

Lad os se dette gennem et eksempel.

grep fred sample.txt

I dette tilfælde får vi ikke et output, da der ikke findes noget ord som 'fred' i prøvefilen. Vi har ordet 'fred' med stort 'P'. Ordet er det samme, men når vi bruger grep kommando uden nogen valgmulighed, søger den efter det nøjagtige match i filen, idet der ses bort fra eventuelle ændringer i store og små bogstaver.

For at undgå denne tvetydighed kan du blot bruge -jeg mulighed, der bogstaveligt talt fortæller grep kommando "glem alt om sagen, jeg har sat strengen i, og søg bare efter alle de matchende mønstre i filen."

Syntaks:

grep -i [streng] [filnavn]

Eksempel:

grep -i peace sample.txt

Produktion:

INDIEN ER ET SMUKKT LAND MED FREDELSKE MENNESKER. Indien er et smukt land med fredselskende mennesker.

Alle matchende linjer vises, uanset i hvilket tilfælde den matchende streng er.

Rekursiv søgning vha grep kommando

Det -r option vil søge efter alle filerne i en mappe og alle dens undermapper, som matcher det strengmønster, som brugeren har angivet i kommandoen.

Syntaks:

grep -i -r [streng] [filsti]

Eksempel:

grep -i -r tomcat /home/gaurav/workspace

Strengen her er 'tomcat', og den vil blive søgt i mappens arbejdsområde. Alle undermapper og filer i 'arbejdsområde'-mappen vil også blive scannet for at matche det angivne strengmønster.

Produktion:

./context_log.policy:// catalina.policy - Sikkerhedspolitiktilladelser for Tomcat 7 ./context_log.policy:// Bemærk: Hvis tomcat-juli.jar er i ${catalina.base} og ikke i ${catalina.home }, ./context_log.policy:// grant codeBase "fil:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "fil:${catalina.home }/bin/tomcat-juli.jar" { ./context_log.policy: permission 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:# - Almindelige ikke-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: stinavn="conf/tomcat-users.xml" /> ./server.xml: 

BEMÆRK: Mens du bruger -r mulighed med grep kommandoen skal vi angive stien til filen og ikke filnavnet

Søger kun hele ord med grep kommando

Mange gange er tilfældet, at du vil søge efter et ord, men du vil ende med at udfylde din terminal med de matchende linjer, som indeholder dit matchende ord, men ikke som et individuelt ord. Du kan muligvis se linjerne, som indeholder nogle ord, hvis underdel er den streng, du har indtastet.

Forvirret med dette? Bare rolig, det er meget nemmere at forstå, når du først har fået eksemplet.

Eksempel:

Her vil jeg søge efter et individuelt ord 'cart' og vise alle de linjer, der matcher dette ord i filen 'sample.txt'.

grep -i cart sample.txt

Produktion:

Kartesiske koordinater betydningen af ​​alle de kartesiske koordinater. brug af en oksevogn er et almindeligt syn i landsbyen til de agrariske gøremål. Vognen forsvandt, da drengen efterlod den løs.

I outputtet kan du observere, at ordet 'Cartesian' også indeholder ordet 'cart', og derfor vises linjerne, der indeholder ordet 'Cartesian', også selvom vi ikke ønsker, at de skal vises.

Du kan bruge -w mulighed med grep kommando til at løse denne tvetydighed.

Syntaks:

grep -i -w [streng] [filnavn]

Eksempel:

grep -i -w cart sample.txt

Produktion:

brug af en oksevogn er et almindeligt syn i landsbyen til de agrariske gøremål. Vognen forsvandt, da drengen efterlod den løs. 

Nu, når du har brugt –w mulighed med grep du får kun de linjer, hvor ordet 'vogn' bruges som helhed.

Omvendt søgning vha grep kommando

grep kommandoen kan også bruges på en omvendt måde. Vi kan bruge grep kommando modsat ved at skjule de matchende linjer og kun vise de linjer, hvor matchen ikke findes. Du kan gøre dette ved at bruge -v mulighed med grep kommando.

Syntaks:

grep -i -v [streng] [filnavn]

Eksempel:

grep -i -v ressourceeksempel.txt

Produktion:

INDIEN ER ET SMUKKT LAND MED FREDELSKE MENNESKER. Indien står på tre søjler af lovgivende, udøvende og dømmende magt. Indien er et smukt land med fredselskende mennesker. kartesiske koordinater betydningen af ​​alle de kartesiske koordinater. brug af en oksevogn er et almindeligt syn i landsbyen til de agrariske gøremål. Dette er slutningen af ​​eksempelfilen.

I outputtet vises alle andre linjer bortset fra den linje, der indeholder ordet 'ressource'.

Tæller forekomster af matchende streng

Outputtet af grep kommandoen er normalt meget lang, hvis dataene i filen er omfattende. Jo flere kampe, jo længere er udgangene af grep kommando. Linux giver dig en mulighed, hvor du kan vise antallet af forekomster af kampen.

Syntaks:

grep -i -c [streng] [filnavn]

Eksempel:

grep -i -c india sample.txt

Produktion:

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

Her er output et tal, som er antallet af forekomster af ordet 'Indien' i filen sample.txt.

BEMÆRK: Jeg har brugt -jeg mulighed i hvert eksempel for bare at være sikker med sagsfølsomhedsproblemet. Hvis du er sikker på sagen for det ord, du søger efter, kan du roligt udelade -jeg mulighed.

Konklusion

Vi har lært de grundlæggende anvendelser af grep kommando på Linux-systemerne i denne øvelse. Vi lærte også at vise forskelligt indhold, der passer bedst til vores krav og ikke overfylde terminalen med masser af linjer. grep kommandoen vil helt sikkert være en tidsbesparende, hvis den bruges til at scanne store datasæt.