I denne artikkelen vil vi forklare bruken av grep-verktøy med forskjellige eksempler. Vi vil bruke Debian 10 for å forklare kommandoene og metodene som er nevnt i denne artikkelen.
Installere Grep
Grep kommer installert i de fleste Linux-distribusjoner. I tilfelle det mangler i systemet ditt, kan du installere det ved å bruke følgende metode i Terminal:
$ sudo apt-get install grepBruke Grep
Her er den grunnleggende syntaksen til grep-kommandoen. Det starter med grep etterfulgt av noen alternativer og søkekriterier, og slutter deretter med filnavnet.
$ grep [opsjoner] MØNSTER [FIL ...]Søk etter filer
For å søke etter et filnavn i en katalog som inneholder en bestemt streng i den, kan du bruke grep på følgende måte:
$ ls -l | grep -i “strengFor eksempel for å søke etter et filnavn som inneholder en streng “test“, Kommandoen ville være:
$ ls -l | grep -i testDenne kommandoen lister opp alle filene som inneholder strengen “test”.
Søk etter en streng i en fil
For å søke etter en streng i en bestemt fil, kan du bruke følgende kommandosyntaks:
$ grep “string” filnavnFor eksempel å søke etter en streng “test”I en fil som heter testfil1, vi har brukt følgende kommando:
$ grep “ansatt” testfil1
Ovennevnte utdata har returnert setningen fra testfil1 som inneholder strengen “ansatt”.
Søk etter en streng i flere filer
For å søke etter en streng i flere filer, kan du bruke følgende kommandosyntaks:
$ grep “string” filnavn1 filnavn2For eksempel, for å søke etter en streng "ansatt" i våre to filer testfile1 og testfile2, har vi brukt følgende kommando:
$ grep “ansatt” testfil1 testfil2
Ovennevnte kommando vil liste opp alle linjene som inneholder strengen “ansatt” fra både filene testfile1 og testfile2.
Du kan også bruke et jokertegn hvis alle filnavnene begynner med samme tekst.
$ grep “string” filnavn *Som om vi tar eksemplet ovenfor der filnavnene våre var testfil1 og testfil2 , kommandoen ville være:
$ grep “ansatt” testfil *
Søk etter en streng i en fil ved å ignorere saken til strengen
Ofte har du opplevd det når du søker etter noe ved hjelp av grep, men ikke mottar utdata. Dette skjer på grunn av uoverensstemmelse mellom tilfeller mens du søker etter en streng. Som i eksempelet vårt, hvis vi feilaktig bruker “Ansatt" i stedet for "ansatt”, Vil den returnere null da filen vår inneholder strengen“ansatt”Med små bokstaver.
Du kan be grep om å ignorere tilfellet med søkestreng ved å bruke -i flagg etter grep som følger:
$ grep -i "streng" filnavn
Ved å bruke -i-flagget vil kommandoen utføre store og små bokstaver og søke tilbake alle linjene som inneholder strengen “ansatt”I den uten å ta hensyn til bokstavene er med store eller små bokstaver.
Søk med vanlig uttrykk
Hvis det brukes riktig, er det regulære uttrykket en veldig effektiv funksjon i grep. Med kommandoen Grep kan du definere et vanlig uttrykk med et start- og sluttord. Ved å gjøre dette trenger du ikke å skrive hele linjen med grep-kommandoen. Følgende syntaks kan brukes til dette formålet.
$ grep “startord.* endingKeyword ”filnavnFor eksempel, for å søke etter en linje i en fil som heter testfile1 som starter med strengen "dette" og slutter med strengen "data", har vi brukt følgende kommando:
$ grep “dette.* data ”testfil1
Det vil skrive ut hele linjen fra testfil1 som inneholder uttrykket (startord "dette" og det avsluttende søkeordet "data").
Skriv ut bestemt antall linjer etter / før søkestrengen
Du kan også vise det spesifikke antallet linjer i en fil før / etter en strengkamp sammen med den samsvarende strengen. Følgende syntaks kan brukes til dette formålet:
$ grep -ADet viser N antall linjer etter at strengen er matchet i den angitte filen inkludert den matchede strengen.
For eksempel er dette eksempelfilen vår testfil2.
Følgende kommando sender ut den samsvarende linjen som inneholder strengen “ansatt”, Sammen med de to linjene etter den.
$ grep -A 2 -i “ansatt” testfil2
På samme måte, for å vise N antall linjer før den samsvarende strengen i en bestemt fil, bruk følgende syntaks:
$ grep -BFor å vise N antall linjer rundt strengen i en bestemt fil, bruk følgende syntaks:
$ grep -CFremhever søket
Grep skriver som standard ut samsvarende linjer, men viser ikke hvilken del av linjen som samsvarer. Hvis du bruker -color-alternativet med grep, vil det vise hvor bearbeidingstrengene vises i filen din. Grep bruker som standard den røde fargen for utheving.
Følgende syntaks kan brukes til dette formålet:
$ grep “string” filnavn - farge
Teller antall kamper
Hvis du vil telle hvor mange ganger et bestemt ord vises i en bestemt fil, kan du bruke grep med -c. Den returnerer bare antall kamper i stedet for selve kampene. Følgende syntaks kan brukes til dette formålet:
$ grep -c "streng" filnavnDette er eksempelfilen vår som ser ut:
Følgende er et eksempel på en kommando som returnerte antall ganger ordet fil dukket opp i en fil med navnet testfil3.
Invertert søk
Noen ganger vil du utføre et omvendt søk som viser alle linjene bortsett fra de som samsvarer med inngangen. For å gjøre det, bruk ganske enkelt flagget -v etterfulgt av grep:
$ grep -v "streng" filnavnFor eksempel å vise alle linjene i en fil testfil3 som ikke inneholder ordet "konto" i dem, har vi brukt følgende kommando:
$ grep -v “konto” testfil3
Bruke Grep med andre kommandoer
Grep kan også brukes til å filtrere ut det nødvendige resultatet fra forskjellige kommandoer. For eksempel fra “apt -installert liste ” kommandoutgang, vil du bare finne pakkene som ble installert automatisk, du kan filtrere ut resultatet ved hjelp av grep som følger:
$ apt - installert liste | grep automatisk
På samme måte gir lscpu detaljert informasjon om CPUen. Hvis du bare er interessert i informasjonen om CPU-arkitekturen, kan du filtrere den ut med følgende kommando:
$ lscpu | grep Arkitektur
I denne artikkelen har vi beskrevet noen eksempler som vil hjelpe deg med å forstå grep-kommandoene og bruken av den under forskjellige forhold. Å ha et godt grep om grep-kommandoen kan spare mye tid hvis du trenger å se på store konfigurasjoner eller loggfiler og skimme nyttig informasjon gjennom dem.