Vanligste GREP -syntaks

Vanligste GREP -syntaks
I Linux, grep er et av de mange verktøyene som kommer forhåndsinstallert. Det er faktisk et akronym som står for “Global Regular Expression Print.” grep Kommando kan søke etter en streng i filer beskrevet av vanlig uttrykk. Hvis noen kamp blir funnet, grep skriver ut resultatet i konsollen.

I denne guiden vil vi se raskt på noen av de vanligste implementeringene av grep kommando.

De grep Kommandostruktur

Enhver GREP -kommando vil ha følgende komponenter.

$ grep

Felles grep syntaks

Søker etter en streng i en fil

Dette er den enkleste måten å bruke grep kommando. I det følgende eksemplet, grep vil søke etter begrepet “DKMS” (uten sitater) i filen APT-pakker-installert.tekst (Inneholder alle de treffende pakkene som er installert i systemet).

$ grep "dkms" apt-pakker-installerte.tekst

Det anbefales å bruke doble anførselstegn (“”) for å indikere en streng fordi en streng kan inneholde spesialtegn og hvitespaser.

Søker etter en streng i flere filer

De grep Kommando kan også utføre søkene på flere filer. Alt du trenger å gjøre er å spesifisere filene sekvensielt.

$ grep "dkms" apt-pakker-installerte-1.TXT APT-pakker-installert-2.tekst

I stedet for å spesifisere filene manuelt, kan du også bruke Wildcard (*) -uttrykket.

$ grep "dkms" apt-pakker-installerte-*.tekst

Hva om vi ønsket å utføre søket på alle filene i den gjeldende katalogen? Bare angi jokertegnsuttrykket for å indikere hver fil i den gjeldende katalogen.

$ grep "dkms" *

Som vi kan se, grep fant alle kampene i tekstfilene, men taklet ikke katalogene godt. Dette fører perfekt til neste punkt.

Søker underkataloger

Som standard, grep vil ikke søke i underkatalogene etter kamper. Hvis du vil grep for å gjøre det, må du fortelle det ved å legge til flagget “-R.”

Prøv å utføre det forrige søket igjen med dette nye trikset.

$ grep -r "dkms" *

Merk at gitt lagene med underkataloger og antall filer som skal sile gjennom, grep kan ta litt tid. På skjermen, det vil se ut som om den er frosset. Så ikke få panikk hvis du møter lignende situasjoner.

Kontrollere linjens nummer på kampen

Å ha linjenummeret til grep Match kan være en gave. For å se linjetallet til kampen, bruk flagget “-N.”

$ grep -n "dkms" *.tekst

Teller antall kamper

De grep Kommando kan telle antall kamper i søkeresultatet. For å gjøre det, bruk flagget “-l.”

$ grep -c "dkms" *.tekst

Her, grep vil vise antall kamper for hver søkte fil.

Skriv ut navn på matchende filer

Noen ganger vil du vite hvilke filer som samsvarer med mønsteret som er spesifisert uten søkeresultatet. Hvis det er tilfelle, bruk flagget “-l.”

$ grep -l "dkms" *.tekst

Skriv ut linjer før og etter den matchende strengen

Som standard, grep vil skrive ut linjen den finner den spesifiserte strengen. Vi kan imidlertid kalibrere utdataene for å skrive ut et par linjer før og/eller etter strengkampen.

GREP vil skrive ut den matchende strengen sammen med 5 tidligere linjer på konsollen i følgende kommando, takket være “-B” -flagget.

$ grep -b 5 "dkms" apt-packages-installert-1.tekst

Tilsvarende kan vi også fortelle grep om å skrive ut flere linjer etter å ha funnet den matchende strengen. For å gjøre det, bruker vi flagget “-A.”I følgende eksempel, grep vil skrive ut 5 linjer etter å ha funnet kampen.

$ grep -a 5 "dkms" apt-packages-installert-1.tekst

Nå er det på tide å kombinere begge disse funksjonene.

$ grep -a 5 -b 5 "dkms" apt-pakker-installert-1.tekst

Kommandoen blir unødvendig forvirrende på denne måten. Vi kan fortelle grep om å skrive ut flere før og etter at kampen er funnet å løse dette. For å gjøre det, bruker vi flagget “-C.”

$ grep -c 5 "dkms" apt-packages-installert-1.tekst

Merk at utgangen vil være symmetrisk rundt den matchende strengen hvis du bruker "-c" -flagget. Hvis du vil ha et asymmetrisk antall linjer, må du beskrive dem separat ved å bruke "-a" og "-b" -flaggene.

Begrensende grep produksjon

Hvis du jobber med en stor tekstfil som inneholder mange forekomster av søkemønsteret, så er grep Utgangen vil skrive ut en stor del av produksjonen med mye rot. For eksempel,

$ grep "installert" apt-pakker-installert-1.tekst

Vi kan fortelle grep om å begrense antall linjer det har lov til å sende ut i en slik situasjon. For å gjøre det, bruker vi flagget “-m.”Kommandoen vil se slik ut:

$ grep -m 10 "installert" apt-pakker-installert-1.tekst

Her, grep vil bare skrive ut de første 10 av de matchende mønstrene.

Ved hjelp av grep med Stdout

Stdout er en filstrøm. Det er et kraftig trekk ved skjell (som bash). Det er en midlertidig fil som inneholder utgangen fra forrige kommando. Når neste kommando kjøres, er verdien av Stdout er oppdatert. Lære mer om Stdin, Stderr, og Stdout i bash.

GREP -kommandoen kan også fungere med Stdout innhold. For eksempel kan du rør ut utgangen fra en kommando for grep å jobbe med.

I det følgende eksemplet returnerer APT -kommandoen listen over alle pakkene som er installert i systemet. Vi rører utgangen til grep og søk etter begrepet “dkms” i utgangen. I følge grep's standardatferd, den vil skrive ut alle linjene som inneholder strengen.

$ APT -liste -Installert | grep "dkm"

Utgangen kan advare om at bruk av APT i skript ikke anbefales, da APT ikke tilbyr et stabilt CLI -grensesnitt. Lær mer om APT Package Manager på Ubuntu.

Siste tanker

Dette er en kort guide om noen av de vanligste bruken av grep kommando. For mestring grep, Det anbefales å sjekke ut denne Mega -guiden som demonstrerer 30 GREP -eksempler.

Hjelpesiden til grep skriver ut en kort side med alle tilgjengelige alternativer.

$ grep -hjelp

Mannen side av grep inneholder alle alternativene med detaljerte forklaringer.

$ mann grep

For nybegynnere, denne guiden på grep Kommando i Linux er et utmerket utgangspunkt.

Glad databehandling!