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.
Mulighed | Beskrivelse |
-jeg | For en søgning uden store og små bogstaver |
-r | At søge rekursivt efter alle filerne i den angivne mappe og dens undermapper |
-c | For at vise det samlede antal gange, en streng vises |
-v | For at vise de ikke-matchende linjer |
-w | Filtrer 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.