Skip to main content

Eksempelbruk av Linux grep Command

SSH on Mac OS X (April 2025)

SSH on Mac OS X (April 2025)
Anonim

Linux grep-kommandoen brukes som en metode for filtrering av inngang. GREP står for Global Regular Expression Printer og derfor for å kunne bruke den effektivt, bør du ha litt kunnskap om regulære uttrykk.

I denne artikkelen vil du lære en rekke eksempler som vil hjelpe deg å forstå grep-kommandoen.

01 av 09

Slik søker du etter en streng i en fil som bruker GREP

Tenk deg at du har en tekstfil som heter bøker med følgende barns boktitler:

  • Robin Hood
  • Rødhette
  • Peter Pan
  • Gullhår og de tre bjørnene
  • Snøhvit og de syv dvergene
  • Pinnochio
  • Katten i hatten
  • De tre små griser
  • Gruffalo
  • Charlie og sjokoladefabrikken

For å finne alle bøkene med ordet "The" i tittelen, bruker du følgende syntaks:

grep bøkene

Følgende resultater blir returnert:

  • Gullhår og de tre bjørnene
  • Snøhvit og de syv dvergene
  • Katten i hatten
  • De tre små griser
  • Gruffalo
  • Charlie og sjokoladefabrikken

I hvert tilfelle vil ordet "The" bli uthevet.

Søket er saksfølsomt, så hvis en av titlene hadde "den" i stedet for "The", ville den ikke blitt returnert.

For å ignorere saken kan du legge til følgende bryter:

grep bøkene --ignore-case

Du kan også bruke -i-bryteren som følger:

grep -i bøkene

Fortsett å lese nedenfor

02 av 09

Søk etter en streng i en fil ved hjelp av jokertegn

Grep-kommandoen er veldig kraftig. Du kan bruke en rekke mønster matching teknikker for å filtrere resultater.

I dette eksemplet vil jeg vise deg hvordan du søker etter en streng i en fil ved hjelp av jokertegn.

Tenk deg at du har en fil som heter steder med følgende skotske stednavn:

AberdeenAberystwythAberlourInverurieInvernessNewburghny hjortny gallowayglasgowedinburgh

Hvis du vil finne alle stedene med inver i navnet, bruk følgende syntaks:

grep inver * steder

Asterisk (*) wildcard står for 0 eller mange. Derfor, hvis du har et sted som heter Inver eller et sted som heter Inverness, vil begge bli returnert.

Et annet jokertegn du kan bruke er perioden (.). Du kan bruke dette til å matche et enkelt brev.

grep inver.r steder

Kommandoen ovenfor vil finne steder som heter inverurie og inverary, men vil ikke finne invereerie fordi det bare kan være ett jokertegn mellom de to r som angitt av den enkelte perioden.

Perioden wildcard er nyttig, men det kan forårsake problemer hvis du har en som en del av teksten du søker.

Se for eksempel på denne listen over domenenavn

  • linux.about.com
  • pcsupport.about.com
  • mp3.about.com
  • minecraft.about.com
  • androidgames.about.com
  • netforbeginners.about.com
  • everydaylinuxuser.com
  • google.co.uk
  • google.au
  • direct.gov.uk

For å finne alt om .coms kan du bare søke ved hjelp av følgende syntaks:

grep * om * domainnames

Kommandoen ovenfor vil falle ned hvis listen inneholdt følgende navn i den:

  • everydaylinuxuser.com/about.html

Du kan derfor prøve følgende syntaks:

grep * about.com domenenavn

Dette ville fungere bra med mindre det var et domene med følgende navn:

aboutycom.com

For å virkelig søke etter begrepet about.com må du unnslippe prikken på følgende måte:

grep * om .com domenenavn

Det endelige jokertegnet som viser deg er spørsmålet som står for null eller ett tegn.

For eksempel:

grep? ber plassnavn

Ovennevnte kommando ville returnere aberdeen, aberystwyth eller til og med berwick.

Fortsett å lese nedenfor

03 av 09

Søk etter strenger i begynnelsen og slutten av linjen ved hjelp av grep

Karat (^) og dollar ($) symbolet lar deg søke etter mønstre i begynnelsen og slutten av linjene.

Tenk deg at du har en fil kalt fotball med følgende lagnavn:

  • Blackpool
  • Liverpool
  • Manchester City
  • Leicester City
  • Manchester United
  • Newcastle United
  • FC United Of Manchester

Hvis du ønsket å finne alle lagene som begynte med Manchester, ville du bruke følgende syntaks:

grep ^ Manchester lagene

Kommandoen ovenfor ville returnere Manchester City og Manchester United, men ikke FC United Of Manchester.

Alternativt kan du finne alle lagene som slutter med United, ved å bruke følgende syntaks:

grep United $ lag

Kommandoen ovenfor ville gå tilbake til Manchester United og Newcastle United, men ikke FC United Of Manchester.

04 av 09

Å telle antall treff ved hjelp av grep

Hvis du ikke vil returnere de faktiske linjene som samsvarer med et mønster ved hjelp av grep, men du bare vil vite hvor mange det er, kan du bruke følgende syntaks:

grep-c mønster inputfile

Hvis mønsteret ble matchet to ganger, ble nummer 2 returnert.

Fortsett å lese nedenfor

05 av 09

Finne alle vilkårene som ikke samsvarer med grep

Tenk deg at du har en liste over stedsnavn med landene som er oppført som følger:

  • Aberdeen Skottland
  • glasgow Scotland
  • liverpool England
  • colwyn bay
  • London, England

Du har kanskje lagt merke til at colwyn bay ikke har noe tilknyttet det.

Hvis du vil søke etter alle stedene med et land, kan du bruke følgende syntaks:

grep land $ steder

Resultatene returnerer ville være alle steder unntatt colwyn bay.

Dette virker åpenbart bare for steder som slutter i land (neppe vitenskapelig).

Du kan invertere valget ved hjelp av følgende syntaks:

grep -v land $ steder

Dette ville finne alle stedene som ikke endte med land.

06 av 09

Slik finner du tomme linjer i filer ved hjelp av grep

Tenk deg at du har en inngangsfil som brukes av et tredjepartsprogram som stopper å lese filen når den finner en tom linje som følger:

  • Aberdeen Skottland
  • inverness scotland
  • liverpool england
  • colwyn bay wales

Når søknaden kommer til linjen etter liverpool, vil den slutte å lese meningen colwyn bay er helt savnet.

Du kan bruke grep til å søke etter tomme linjer med følgende syntaks:

grep ^ $ steder

Dessverre er dette ikke spesielt nyttig fordi det bare returnerer de tomme linjene.

Du kan selvfølgelig få en telling av antall tomme linjer som en sjekk for å se om filen er gyldig som følger:

grep -c ^ $ steder

Det ville imidlertid være mer nyttig å vite linjenumrene som har en tom linje slik at du kan erstatte dem. Du kan gjøre det med følgende kommando:

grep -n ^ $ steder

Fortsett å lese nedenfor

07 av 09

Slik søker du etter snorer av store eller små bokstaver ved hjelp av grep

Ved hjelp av grep kan du bestemme hvilke linjer i en fil som har store bokstaver ved hjelp av følgende syntaks:

grep 'A-Z' filnavn

De firkantede parentesene lar deg bestemme antall tegn. I eksempelet ovenfor samsvarer det med et hvilket som helst tegn som er mellom A og Z.

Derfor, for å matche små bokstaver, kan du bruke følgende syntaks:

grep 'a-z' filnavn

Hvis du vil bare matche bokstaver og ikke numeriske tegn eller andre symboler, kan du bruke følgende syntaks:

grep 'a-zA-Z' filnavn

Du kan gjøre det samme med tallene som følger:

grep '0-9' filnavn 08 av 09

Ser etter gjentatte mønstre ved hjelp av grep

Du kan bruke krøllete parentes {} for å søke etter et gjentatt mønster.

Tenk deg at du har en fil med telefonnumre som følger:

  • 055-1234
  • 055-4567
  • 555-1545
  • 444-0167
  • 444-0854
  • 4549-2234
  • x44-1234

Du vet at den første delen av nummeret må være tre sifre og du vil finne linjene som ikke samsvarer med dette mønsteret.

Fra forrige eksempel vet du at 0-9 returnerer alle tall i en fil.

I dette tilfellet ønsker vi linjene som starter med tre tall etterfulgt av en bindestrek (-). Du kan gjøre det med følgende syntaks:

grep "^ 0-9 0-9 0-9 -" tall

Som vi vet fra tidligere eksempler betyr karat (^) at linjen må begynne med følgende mønster.

0-9 vil søke etter et tall mellom 0 og 9. Da dette er inkludert tre ganger, matcher det 3 tall. Til slutt er det en bindestrek for å indikere at en bindestrek må lykkes de tre tallene.

Ved å bruke de krøllede parentesene kan du gjøre søket mindre som følger:

grep "^ 0-9 {3 } -" tall

Slash unngår {bracket slik at det fungerer som en del av det vanlige uttrykket, men i hovedsak hva dette sier er 0-9 {3} som betyr et tall mellom 0 og 9 tre ganger.

De krøllete parentesene kan også brukes som følger:

{5,10}{5,}

{5,10} betyr at tegnet som søges etter, må gjentas minst 5 ganger, men ikke mer enn 10, mens {5,} betyr at tegnet må gjentas minst fem ganger, men det kan være mer enn det.

Fortsett å lese nedenfor

09 av 09

Bruke utgangen fra andre kommandoer ved hjelp av grep

Hittil har vi sett på mønstermatching i individuelle filer, men grep kan bruke utdata fra andre kommandoer som inngang for mønstermatching.

Et godt eksempel på dette er å bruke ps-kommandoen som viser aktive prosesser.

For eksempel, kjør følgende kommando:

ps -ef

Alle løpende prosesser på systemet ditt vil bli vist.

Du kan bruke grep til å søke etter en bestemt løpeprosess som følger:

ps -ef | grep firefox

Sammendrag

Grep-kommandoen er en grunnleggende Linux-kommando, og det er en som er vel verdt å lære, da det vil gjøre livet ditt mye lettere når du søker etter filer og prosesser når du bruker terminalen.