Forstå grep-kommandoen med praktiske eksempler for enkelt å filtrere og vise filinnholdet
GREP
står for "Global Regular Expression Print". Det er et nyttig kommandolinjeverktøy levert av Linux, for å søke etter tekstlinjen som samsvarer med mønsteret gitt av brukeren.
grep
tar innspill fra brukeren i form av strenger eller ord som brukeren ønsker å søke i en bestemt fil. Kommandoen sjekker deretter filen spesifisert av brukeren for dette mønsteret og returnerer deretter linjene som samsvarer med mønsteret som er oppgitt.
Den gjør en utmerket jobb ved å filtrere innholdet i en fil og dermed gjøre oppgaven vår enklere å søke etter bestemt innhold på enkelt eller flere filer samtidig.
I denne artikkelen, la oss se på funksjonen til grep
kommando med noen praktiske eksempler i detalj.
Alternativer tilgjengelig med grep
kommando
Dette er noen av de grunnleggende alternativene du vil bruke ofte med grep
kommando.
Alternativ | Beskrivelse |
-Jeg | For et søk uten store og små bokstaver |
-r | Å søke rekursivt etter alle filene i den angitte katalogen og dens underkataloger |
-c | For å vise totalt antall ganger en streng vises |
-v | For å vise linjene som ikke samsvarer |
-w | Filtrer for det bestemte ordet brukt separat |
Bruker grep
kommando
grep
kommandoen brukes vanligvis med røret (|
) nytte. Det kan implementeres med shell pipen når du vil bruke det med noen andre Linux-kommandoer. Selv om, grep
kan også brukes enkeltvis uten rør (|
) nytte.
La oss se på noen av de grunnleggende syntaksene til grep
kommando med og uten rørverktøyet.
La meg først vise deg eksempeltekstfilen jeg skal bruke for å illustrere grep
kommando.
INDIA ER ET VAKKERT LAND MED FREDELSKE FOLK. India står på tre søyler av lovgivende, utøvende og rettsvesen. India er et vakkert land med fredselskende mennesker. India bryr seg om folket ettersom dets kartesiske koordinater er viktige for alle kartesiske koordinater. Følgende er to tomme linjer. bruk av oksevogn er et vanlig syn i bygda for de agrariske gjøremålene. Dette er slutten av eksempelfilen.
grep
brukt med rør ( | )nytte
grep
kommandoen kan implementeres sammen med andre Linux-kommandoer ved å bruke shell-pipene. Som å bruke katt
kommandoen for å vise innholdet i filen, men samtidig overføre utdataene ved å bruke grep
kommando for å vise bare innholdet du ønsker å se. Dette vil være mer tydelig når vi går gjennom eksemplet.
Syntaks:
[kommando] | grep [streng]
Eksempel:
cat sample.txt | grep lovgiver
Her har jeg brukt katt
kommandoen for å vise noen linjer fra 'sample.txt'-filen. Bare de linjene som inneholder ordet "lovgiver" skal vises og ignorere resten av linjene.
Produksjon:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature india står på tre pilarer av lovgivende, utøvende og rettsvesen. gaurav@ubuntu:~/workspace$
grep
brukt uten rør ( | )nytte
grep
kan til og med brukes direkte som en individuell kommando uten å bruke røret ( |
) nytte.
Syntaks:
grep [string_to_be_searched] [filnavn]
Eksempel:
grep India sample.txt
Produksjon:
India er et vakkert land med fredselskende mennesker. India bryr seg om menneskene som sin ressurs
Dermed har jeg brukt grep
kommandoen direkte for å filtrere linjene som inneholder strengen 'India' fra tekstfilen 'sample.txt'.
Uavhengig av store og små bokstaver søk med grep
kommando
Linux er veldig forsiktig med følsomheten for store og små bokstaver når vi avfyrer kommandoene på terminalen. Dette krever at brukeren er forsiktig med tilfellet av strengen som legges inn i kommandoen.
La oss se dette gjennom et eksempel.
grep fred sample.txt
I dette tilfellet vil vi ikke få en utgang siden det ikke finnes noe ord som "fred" i eksempelfilen. Vi har ordet 'fred' med stor 'P'. Ordet er det samme, men når vi bruker grep
kommandoen uten noe alternativ, søker den etter den eksakte matchen i filen, og ser bort fra endringer i store og små bokstaver.
For å unngå denne tvetydigheten kan du ganske enkelt bruke -Jeg
alternativ som bokstavelig talt forteller grep
kommando "glem saken jeg har lagt strengen i, og søk bare etter alle samsvarende mønstre i filen."
Syntaks:
grep -i [streng] [filnavn]
Eksempel:
grep -i fred sample.txt
Produksjon:
INDIA ER ET VAKKERT LAND MED FREDELSKE FOLK. India er et vakkert land med fredselskende mennesker.
Alle samsvarende linjer vises uavhengig av tilfellet der den samsvarende strengen er.
Rekursivt søk ved hjelp av grep
kommando
De -r
alternativet vil søke etter alle filene i en katalog og alle dens underkataloger som samsvarer med strengmønsteret gitt av brukeren i kommandoen.
Syntaks:
grep -i -r [streng] [filbane]
Eksempel:
grep -i -r tomcat /home/gaurav/workspace
Strengen her er "tomcat" og den vil bli søkt i katalogens arbeidsområde. Alle underkatalogene og filene i "arbeidsområde"-katalogen vil også bli skannet for å matche strengmønsteret som er gitt.
Produksjon:
./context_log.policy:// catalina.policy - Sikkerhetspolicytillatelser for Tomcat 7 ./context_log.policy:// Merk: Hvis tomcat-juli.jar er i ${catalina.base} og ikke i ${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: tillatelse 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:# - Vanlige 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: pathname="conf/tomcat-users.xml" /> ./server.xml:
MERK: Mens du bruker -r
alternativet med grep
kommandoen må vi oppgi banen til filen og ikke filnavnet
Søker kun hele ord med grep
kommando
Mange ganger er tilfellet at du vil søke etter ett ord, men du vil ende opp med å fylle terminalen din med de samsvarende linjene som inneholder det samsvarende ordet, men ikke som et enkeltord. Du kan se linjene som inneholder noen ord hvis underdel er strengen du har skrevet inn.
Forvirret med dette? Ikke bekymre deg, det er mye lettere å forstå når du først har fått eksemplet.
Eksempel:
Her vil jeg søke etter et individuelt ord 'cart' og vise alle linjene som samsvarer med dette ordet i filen 'sample.txt'.
grep -i cart sample.txt
Produksjon:
Kartesiske koordinater betydningen av alle de kartesiske koordinatene. bruk av oksevogn er et vanlig syn i bygda for de agrariske gjøremålene Vognen ble borte da gutten lot den ligge løs.
I utgangen kan du observere at ordet 'kartesisk' også inneholder ordet 'vogn', og derfor vises linjene som inneholder ordet 'kartesisk' også selv om vi ikke vil at de skal vises.
Du kan bruke -w
alternativet med grep
kommando for å løse denne tvetydigheten.
Syntaks:
grep -i -w [streng] [filnavn]
Eksempel:
grep -i -w cart sample.txt
Produksjon:
bruk av oksevogn er et vanlig syn i bygda for de agrariske gjøremålene. Vognen ble borte da gutten lot den ligge løs.
Nå, når du har brukt –w
alternativ med grep
du vil bare få opp linjene der ordet "vogn" brukes som helhet.
Invertert søk ved hjelp av grep
kommando
grep
kommandoen kan også brukes på en omvendt måte. Vi kan bruke grep
kommandoen motsatt ved å skjule de samsvarende linjene og bare vise linjene der samsvaret ikke er funnet. Du kan gjøre dette ved å bruke -v
alternativet med grep
kommando.
Syntaks:
grep -i -v [streng] [filnavn]
Eksempel:
grep -i -v ressurseksempel.txt
Produksjon:
INDIA ER ET VAKKERT LAND MED FREDELSKE FOLK. India står på tre søyler av lovgivende, utøvende og rettsvesen. India er et vakkert land med fredselskende mennesker. kartesiske koordinater betydningen av alle de kartesiske koordinatene. bruk av oksevogn er et vanlig syn i bygda for de agrariske gjøremålene. Dette er slutten av eksempelfilen.
I utdataene vises alle andre linjer bortsett fra linjen som inneholder ordet 'ressurs'.
Teller forekomster av samsvarende streng
Utgangen til grep
kommandoen er vanligvis veldig lang hvis dataene i filen er omfattende. Jo flere treff, jo lengre er utgangene til grep
kommando. Linux gir deg et alternativ der du kan vise antall forekomster av kampen.
Syntaks:
grep -i -c [streng] [filnavn]
Eksempel:
grep -i -c india sample.txt
Produksjon:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$
Her er utdata et tall som er antall forekomster av ordet «India» i filen sample.txt.
MERK: Jeg har brukt -Jeg
alternativ i hvert eksempel for å bare være trygg med sakssensitivitetsproblemet. Hvis du er sikker på tilfellet til ordet du søker etter, kan du trygt utelate -Jeg
alternativ.
Konklusjon
Vi har lært de grunnleggende bruken av grep
kommando på Linux-systemene i denne opplæringen. Vi lærte også å vise forskjellig innhold som passer best til våre krav og ikke fylle terminalen med mange linjer. grep
kommandoen vil sikkert være en tidsbesparende hvis den brukes til å skanne store datasett.