Grep Command i Linux

Grep Command Linux



Grep-kommandoen (global regular expression print) er det kraftigste og mest brukte Linux-kommandolinjeverktøyet. Ved å bruke Grep kan du søke etter nyttig informasjon ved å angi et søkekriterium. Den søker etter et bestemt uttrykksmønster i en spesifisert fil. Når den finner en treff, skriver den ut alle linjene i en fil som samsvarer med det angitte mønsteret. Det kommer godt med når du må filtrere gjennom store loggfiler.

I denne artikkelen vil vi forklare bruken av grep -verktøyet med forskjellige eksempler. Vi vil bruke Debian 10 til å forklare kommandoene og metodene som er nevnt i denne artikkelen.







Installerer Grep

Grep kommer installert i de fleste Linux -distribusjonene. Men hvis det mangler fra systemet ditt, kan du installere det ved å bruke følgende metode i Terminal:



$sudo apt-get install grep

Bruker Grep

Her er den grunnleggende syntaksen for grep -kommandoen. Det starter med grep etterfulgt av noen alternativer og søkekriterier og slutter deretter med filnavnet.



$grep [alternativer]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 -de | grep -Jegstreng

For eksempel å søke etter et filnavn som inneholder en streng test , vil kommandoen være:

$ls-de| grep-Jegtest

Denne kommandoen viser 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:

$grepstrengfilnavn

For eksempel for å søke etter en streng test i en fil med navnet testfil 1 , vi har brukt følgende kommando :

$grepansattes testfil 1

Utdataene ovenfor har returnert setningen fra testfil 1 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:

$grepstreng filnavn1 filnavn2

For eksempel, for å søke etter en strengmedarbeider i våre to filer testfile1 og testfile2, har vi brukt følgende kommando:

$grepansattes testfil1 testfil2

Kommandoen ovenfor viser alle linjene som inneholder strengen ansatte fra begge filene testfile1 og testfile2.

Du kan også bruke et jokertegn hvis alle filnavnene begynner med samme tekst.

$grepstrengfilnavn*

Som hvis vi tar eksemplet ovenfor der filnavnene våre var testfile1 og testfile2 , vil kommandoen være:

$grepansattes testfil*

Søk etter en streng i en fil ved å ignorere tilfelle av strengen

Som oftest har du støtt på det når du søker etter noe ved hjelp av grep, men ikke mottar utdata. Dette skjer på grunn av en uoverensstemmelse mellom sakene mens du søker etter en streng. Som i vårt eksempel, hvis vi bruker feil Ansatt i stedet for ansatt , vil den returnere null ettersom 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 strengfilnavn

Ved å bruke –i -flagget, vil kommandoen utføre sakens ufølsomt søk og returnere alle linjene som inneholder strengen ansatt i det uten å ta hensyn til at bokstavene er store eller små.

Søk med det vanlige uttrykket

Hvis det brukes riktig, er det vanlige uttrykket en veldig effektiv funksjon i grep. Med Grep -kommandoen kan du definere et vanlig uttrykk med et start- og et sluttord. Ved å gjøre det trenger du ikke å skrive hele linjen med kommandoen grep. Følgende syntaks kan brukes til dette formålet.

$grepstartord.*endingKeyword filnavn

For eksempel, for å søke etter en linje i en fil som heter testfile1 som starter med strengen dette og slutter med strengdata, har vi brukt følgende kommando:

$grepdette.*datatestfil 1

Det vil skrive ut hele linjen fra testfil 1 som inneholder uttrykket (startordet for dette og sluttsøkeorddataene).

Skriv ut et bestemt antall linjer etter/før søkestrengen

Du kan også vise det spesifikke antallet linjer i en fil før/etter en strengmatch sammen med selve den matchede strengen. Følgende syntaks kan brukes til dette formålet:

$grep -TIL <N>strengfilnavn

Det vil vise N antall linjer etter at strengen er matchet i den angitte filen, inkludert den matchede strengen.

Dette er for eksempel vår eksempelfil som heter testfil2 .

Følgende kommando sender ut den matchede linjen som inneholder strengen ansatt , sammen med de 2 linjene etter den.

$grep-TIL2–Jeg ansatt testfil2

Tilsvarende, for å vise N antall linjer før den matchede strengen i en bestemt fil, bruker du følgende syntaks:

$grep -B <N>strengfilnavn

For å vise N antall linjer rundt strengen i en bestemt fil, bruker du følgende syntaks:

$grep -C <N>strengfilnavn

Fremhever søket

Grep som standard skrive ut matchende linjer, men viser ikke hvilken del av linjen som samsvarer. Hvis du bruker –color -alternativet med grep, vil det vise hvor bearbeidingsstrengene vises i filen din. Grep bruker som standard den røde fargen for å markere.

Følgende syntaks kan brukes til dette formålet:

$grepstrengfilnavn--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 -alternativet. Det returnerer bare antall kamper i stedet for selve kampene. Følgende syntaks kan brukes til dette formålet:

$grep–C strengfilnavn

Dette er vår eksempelfil som ser slik 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 det som samsvarer med inngangen. For å gjøre det, bruker du bare –v -flagget etterfulgt av grep:

$grep–V strengfilnavn

For eksempel for å vise alle linjene i en fil testfil3 som ikke inneholder ordet konto i dem, har vi brukt følgende kommando:

$grep–V testfile3

Bruke Grep med andre kommandoer

Grep kan også brukes til å filtrere ut det nødvendige resultatet fra forskjellige kommandoer. For eksempel fra passende - installert liste kommandoutgang, vil du bare finne pakkene som ble installert automatisk, du kan filtrere ut resultatet ved å bruke grep som følger:

$passende-installertliste| grepAutomatisk

På samme måte gir lscpu detaljert informasjon om CPU -en. Hvis du bare er interessert i informasjonen om CPU -arkitekturen, kan du filtrere den ut ved hjelp av følgende kommando:

$lscpu| grepArkitektur

I denne artikkelen har vi beskrevet noen eksempler som vil hjelpe deg med å forstå grep -kommandoene og bruken av dem under forskjellige forhold. Å ha et godt grep om grep -kommandoen kan spare mye tid hvis du trenger å se på store konfigurasjoner eller logge filer og skumme nyttig informasjon gjennom dem.