Förstå grep-kommandot med praktiska exempel för att enkelt filtrera och visa filinnehållet
GREP
står för "Global Regular Expression Print". Det är ett användbart kommandoradsverktyg som tillhandahålls av Linux, för att söka efter textraden som matchar mönstret som användaren tillhandahåller.
grep
tar input från användaren i form av strängar eller ord som användaren vill söka i en viss fil. Kommandot kontrollerar sedan filen som specificerats av användaren för detta mönster och returnerar sedan raderna som matchar mönstret som tillhandahålls.
Det gör ett utmärkt jobb genom att filtrera innehållet i en fil, vilket gör vår uppgift lättare att söka efter visst innehåll på enstaka eller flera filer samtidigt.
Låt oss i den här artikeln granska funktionen hos grep
kommando med några praktiska exempel i detalj.
Alternativ tillgängliga med grep
kommando
Det här är några av de grundläggande alternativen du kommer att använda ofta med grep
kommando.
Alternativ | Beskrivning |
-jag | För en skiftlägesokänslig sökning |
-r | För att rekursivt söka efter alla filer i den angivna katalogen och dess underkataloger |
-c | För att visa det totala antalet gånger en sträng visas |
-v | För att visa de icke-matchande raderna |
-w | Filtrera för just det ordet som används separat |
Använda grep
kommando
grep
kommandot används vanligtvis med pipen (|
) verktyg. Det kan implementeras med skalröret när du vill använda det med några andra Linux-kommandon. Fastän, grep
kan även användas individuellt utan röret (|
) verktyg.
Låt oss se några av de grundläggande syntaxerna för grep
kommando med och utan rörverktyget.
Låt mig först visa dig exempeltextfilen som jag kommer att använda för att illustrera grep
kommando.
INDIEN ÄR ETT VACKERT LAND MED FREDSLÄKANDE FOLK. Indien står på tre pelare: lagstiftande, verkställande och rättsliga makt. Indien är ett vackert land av fredsälskande människor. Indien bryr sig om människorna eftersom dess resurs kartesiska koordinater betydelse för alla kartesiska koordinater. Följande är två tomma rader. användning av en tjurvagn är en vanlig syn i byn för jordbrukssysslorna. Detta är slutet på exempelfilen.
grep
används med rör ( | )verktyg
grep
kommandot kan implementeras tillsammans med andra Linux-kommandon med hjälp av skalrören. Som att använda katt
kommandot för att visa innehållet i filen men samtidigt förvandla utdata med hjälp av grep
kommandot för att endast visa det innehåll du vill se. Detta blir tydligare när vi går igenom exemplet.
Syntax:
[kommando] | grep [sträng]
Exempel:
cat sample.txt | grep lagstiftande församling
Här har jag använt katt
kommandot för att visa några rader från filen 'sample.txt'. Endast de rader som innehåller ordet "lagstiftande församling" ska visas och ignorera resten av raderna.
Produktion:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep legislature india står på tre pelare av lagstiftande makt, verkställande och rättsväsende. gaurav@ubuntu:~/workspace$
grep
används utan rör ( | )verktyg
grep
kan till och med användas direkt som ett individuellt kommando utan att använda röret ( |
) verktyg.
Syntax:
grep [string_to_be_searched] [filnamn]
Exempel:
grep Indien sample.txt
Produktion:
Indien är ett vackert land av fredsälskande människor. Indien bryr sig om människorna som sin resurs
Således har jag använt grep
kommandot direkt för att filtrera raderna som innehåller strängen 'India' från textfilen 'sample.txt'.
Skiftlägesokänslig sökning med hjälp av grep
kommando
Linux är mycket försiktig med skiftlägeskänsligheten när vi avfyrar kommandona på terminalen. Detta kräver att användaren är försiktig med fallet med strängen som lagts in i kommandot.
Låt oss se detta genom ett exempel.
grep fred sample.txt
I det här fallet kommer vi inte att få en utdata eftersom det inte finns något ord som "fred" i exempelfilen. Vi har ordet 'fred' med stort 'P'. Ordet är detsamma men när vi använder grep
utan något alternativ, söker den efter den exakta matchningen i filen, utan hänsyn till eventuella ändringar i skiftläge.
För att undvika denna tvetydighet kan du helt enkelt använda -jag
alternativ som bokstavligen talar om grep
kommando "Glöm fallet jag har lagt strängen i, och sök bara efter alla matchande mönster i filen."
Syntax:
grep -i [sträng] [filnamn]
Exempel:
grep -i peace sample.txt
Produktion:
INDIEN ÄR ETT VACKERT LAND MED FREDSLÄKANDE FOLK. Indien är ett vackert land av fredsälskande människor.
Alla matchande rader visas oavsett i vilket fall den matchande strängen är.
Rekursiv sökning med hjälp av grep
kommando
De -r
alternativet kommer att söka efter alla filer i en katalog och alla dess underkataloger som matchar strängmönstret som tillhandahålls av användaren i kommandot.
Syntax:
grep -i -r [sträng] [filsökväg]
Exempel:
grep -i -r tomcat /home/gaurav/workspace
Strängen här är "tomcat" och den kommer att sökas i katalogens arbetsyta. Alla underkataloger och filer i katalogen "arbetsyta" kommer också att skannas för att matcha det angivna strängmönstret.
Produktion:
./context_log.policy:// catalina.policy - Säkerhetspolicybehörigheter för Tomcat 7 ./context_log.policy:// Obs: Om tomcat-juli.jar är i ${catalina.base} och inte i ${catalina.home }, ./context_log.policy:// grant codeBase "file:${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:# - Vanliga icke-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:
NOTERA: När du använder -r
alternativet med grep
kommandot måste vi ange sökvägen till filen och inte filnamnet
Söker bara hela ord med grep
kommando
Många gånger är fallet att du kommer att söka efter ett ord men du kommer att fylla din terminal med de matchande raderna som innehåller ditt matchande ord men inte som ett enskilt ord. Du kan se raderna som innehåller några ord vars underdel är strängen som du har skrivit in.
Förvirrad med detta? Oroa dig inte, det är mycket lättare att förstå när du väl får exemplet.
Exempel:
Här vill jag söka efter ett enskilt ord "vagn" och visa alla rader som matchar detta ord i filen "sample.txt".
grep -i cart sample.txt
Produktion:
Kartesiska koordinater betydelsen av alla kartesiska koordinater. användning av tjurvagn är en vanlig syn i byn för jordbrukssysslorna. Vagnen försvann när pojken lämnade den lös.
I utgången kan du observera att ordet 'cartesian' också innehåller ordet 'cart' och följaktligen visas raderna som innehåller ordet 'cartesian' även om vi inte vill att de ska visas.
Du kan använda -w
alternativet med grep
kommando för att lösa denna oklarhet.
Syntax:
grep -i -w [sträng] [filnamn]
Exempel:
grep -i -w cart sample.txt
Produktion:
användning av en tjurvagn är en vanlig syn i byn för jordbrukssysslorna. Vagnen försvann när pojken lämnade den lös.
Nu, när du har använt –w
alternativ med grep
du får bara de rader där ordet "vagn" används som helhet.
Inverterad sökning med hjälp av grep
kommando
grep
kommandot kan också användas på ett omvänt sätt. Vi kan använda grep
kommandot motsatt genom att dölja de matchande raderna och endast visa de rader där matchningen inte hittas. Du kan göra detta med hjälp av -v
alternativet med grep
kommando.
Syntax:
grep -i -v [sträng] [filnamn]
Exempel:
grep -i -v resursexempel.txt
Produktion:
INDIEN ÄR ETT VACKERT LAND MED FREDSLÄKANDE FOLK. Indien står på tre pelare: lagstiftande, verkställande och rättsliga makt. Indien är ett vackert land av fredsälskande människor. kartesiska koordinater betydelsen av alla kartesiska koordinater. användning av en tjurvagn är en vanlig syn i byn för jordbrukssysslorna. Detta är slutet på exempelfilen.
I utgången visas alla andra rader förutom raden som innehåller ordet "resurs".
Räknar förekomster av matchande sträng
Utgången av grep
kommandot är vanligtvis mycket långt om data i filen är omfattande. Ju fler matchningar, desto längre är utgångarna på grep
kommando. Linux ger dig ett alternativ där du kan visa antalet förekomster av matchen.
Syntax:
grep -i -c [sträng] [filnamn]
Exempel:
grep -i -c india sample.txt
Produktion:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$
Här är utdata ett tal som är antalet förekomster av ordet "Indien" i filen sample.txt.
NOTERA: Jag har använt -jag
alternativet i varje exempel för att bara vara säker med skiftlägeskänslighet. Om du är säker på fallet med ordet du söker efter kan du säkert utelämna -jag
alternativ.
Slutsats
Vi har lärt oss de grundläggande användningarna av grep
kommandot på Linux-systemen i denna handledning. Vi lärde oss också att visa olika innehåll som bäst passar våra krav och att inte tränga terminalen med massor av rader. grep
kommandot kommer säkert att spara tid om det används för att skanna stora datamängder.