Grep kommando i linux

Grep kommando i linux
GREP (Global Regular Expression Print) -kommandoen er den kraftigste og regelmessige brukte Linux-kommandolinjeverktøyet. Ved hjelp av GREP kan du søke etter nyttig informasjon ved å spesifisere et søkekriterier. Den søker etter et bestemt uttrykksmønster i en spesifisert fil. Når den finner en kamp, ​​skriver den ut alle linjene i en fil som samsvarer med det spesifiserte 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 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 hjelp av følgende metode i terminalen:

$ sudo apt-get install grep

Bruker 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 [alternativer] mønster [fil…]

Søk etter filer

For å søke etter et filnavn i en katalog som inneholder en spesifikk streng i den, kan du bruke GREP på følgende måte:

$ ls -l | grep -i “String

For eksempel å søke etter et filnavn som inneholder en streng "test“Kommandoen ville være:

$ ls -l | grep -i test

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 kommandosyntax:

$ grep “streng” filnavn

For eksempel å søke etter en streng "test”I en fil som heter testfile1, Vi har brukt følgende kommando:

$ grep “ansatt” testfile1

Ovennevnte utgang har returnert setningen fra testfile1 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 kommandosyntax:

$ grep “streng” filnavn1 filnavn2

For å søke etter en streng “ansatt” i våre to filer TestFile1 og TestFile2, har vi for eksempel brukt følgende kommando:

$ grep “ansatt” testfile1 testfile2

Kommandoen ovenfor vil liste opp alle linjene som inneholder strengen “Ansatt” fra begge filene TestFile1 og TestFile2.

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

$ grep “streng” filnavn*

Som om vi tar eksemplet ovenfor der våre filnavn var TestFile1 og TestFile2 , Kommandoen ville være:

$ grep “ansatt” testfile*

Søk etter en streng i en fil ved å ignorere saken om strengen

Oftest har du møtt at når du søker etter noe ved hjelp av GREP, men ikke mottar en utdata. Dette skjer på grunn av et tilfeller av et tilfelle mens du søker etter en streng. Som i vårt eksempel, hvis vi feilaktig bruker “Ansatt" i stedet for "ansatt”, Den vil returnere null ettersom filen vår inneholder strengen”ansatt”I små bokstaver.

Du kan fortelle grep om å ignorere saken om søkestreng ved å bruke -i flagg etter grep som følger:

$ grep -i “String” filnavn

Ved å bruke -i -flagget vil kommandoen utføre saken ufølsom søk og vil returnere alle linjene som inneholder strengen "ansatt”I det uten å ta hensyn til brevene er i store bokstaver eller små bokstaver.

Søk ved hjelp av 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 sluttnøkkelord. Ved å gjøre det, trenger du ikke å skrive hele linjen med GREP -kommandoen. Følgende syntaks kan brukes til dette formålet.

$ grep “Start nøkkelord.*EndingKeyWord ”filnavn

For å søke etter en linje i en fil som heter TestFile1 som starter med strengen “This” og ender med strengen “Data”, har vi brukt følgende kommando:

$ grep “Dette.*data ”testfile1

Den vil trykke hele linjen fra testfile1 Inneholder uttrykket (starter nøkkelord “dette” og slutt nøkkelordet “data”).

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 strengkamp sammen med selve den matchede strengen. Følgende syntaks kan brukes til dette formålet:

$ grep -a “String” filnavn

Den vil vise n antall linjer etter at strengen er matchet i den spesifiserte filen inkludert den matchede strengen.

For eksempel er dette vår prøvefil som heter testfile2.

Følgende kommando vil sende ut den matchede linjen som inneholder strengen “ansatt”, Sammen med de to linjene etter den.

$ grep -a 2 -i “ansatt” testfile2

Tilsvarende, for å vise n antall linjer før den matchede strengen i en spesifikk fil, bruk følgende syntaks:

$ grep -b “String” filnavn

For å vise N antall linjer rundt strengen i en spesifikk fil, bruk følgende syntaks:

$ grep -c “String” filnavn

Fremheve søket

Grep som standard utskrift matchede linjer, men viser ikke hvilken del av linjen som er matchet. Hvis du bruker alternativet med grep, vil det vise hvor maskineringsstrengene vises i filen din. Grep som standard bruker den røde fargen for å fremheve.

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

$ grep “streng” filnavn -farger

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

$ grep -c “String” filnavn

Dette er vår eksempler på filen ser ut som:

Følgende er et eksempel på en kommando som returnerte antall ganger ordet fil dukket opp i en fil som heter testfile3.

Omvendt søk

Noen ganger vil du utføre et omvendt søk som viser alle linjer bortsett fra det som samsvarer med inngangen. For å gjøre det, bare bruk -v -flagget etterfulgt av GREP:

$ grep -v “String” filnavn

For eksempel å vise alle linjene i en fil testfile3 Det inneholder ikke ordet "konto" i dem, vi har brukt følgende kommando:

$ grep -v “konto” testfile3

Bruker grep med andre kommandoer

GREP kan også brukes til å filtrere ut det nødvendige resultatet fra forskjellige kommandoutgang. For eksempel fra "Apt -installert liste ” Kommandoutgang, du vil bare finne pakkene som ble installert automatisk, du kan filtrere ut resultatet ved å bruke GREP som følger:

$ apt -installert liste | grep automatisk

Tilsvarende gir LSCPU detaljert informasjon om CPU. Hvis du bare er interessert i informasjonen om CPU -arkitekturen, kan du filtrere den ut ved hjelp av 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 sterkt grep om GREP -kommandoen kan spare mye tid hvis du trenger å se på store konfigurasjons- eller loggfiler og skumme nyttig informasjon gjennom dem.