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!