Eksempel 1: Søker etter en bestemt streng i en fil
Dette er den vanligste bruken av egrep-kommandoen. Hva du gjør er at du angir en streng du vil søke etter, og filnavnet du vil slå opp den strengen i. Resultatet viser deretter hele linjen som inneholder den søkte strengen.
Syntaks:
$ egrep “search_string” filnavnEksempel:
$ egrep debian samplefile.tekstI dette eksemplet søkte jeg etter ordet “debian” i den angitte tekstfilen. Du kan se hvordan resultatene viser hele linjen som inneholder ordet “debian”:
Eksempel 2: Søker etter en bestemt streng i flere filer
Med egrep-kommandoen kan du søke etter en streng blant flere filer som ligger i samme katalog. Du må bare være litt mer spesifikk når du gir et "mønster" for de søkte filene. Dette vil bli tydeligere med eksemplet vi vil presentere.
Syntaks:
$ egrep "søkestreng" filnavn_mønsterEksempel:
Her vil vi søke etter ordet "debian" i alle .txt-filer ved å spesifisere filnavnmønsteret som følger:
$ egrep “debian” *.tekst
Kommandoen har skrevet ut alle linjene, sammen med filnavnene som inneholder ordet "debian" fra alle .txt-filer i gjeldende katalog.
Eksempel 3: Gjennomgående søk i strengen i hele katalogen
Når du vil søke etter en streng i alle filene fra en katalog og underkatalogene, kan du gjøre det ved å bruke -r-flagget med kommandoen egrep.
Syntaks:
$ egrep -r "søkestreng" *Eksempel:
I dette eksemplet søker jeg etter ordet "sample" i filene i hele den nåværende (Nedlastinger) katalogen.
$ egrep -r "prøve" *
Resultatene inneholder alle linjene, sammen med filnavnene, som inneholder ordet "eksempel" fra alle filene i nedlastingsmappen, og underkatalogene.
Eksempel 4: Gjennomføre et sak-sensitivt søk
Med flagget -i kan du bruke egrep-kommandoen til å skrive ut resultatene basert på en søkestreng uten å måtte bekymre deg for saken.
Syntaks:
$ egrep -i "search_string" filnavnEksempel:
Her søker jeg etter ordet "debian" og jeg vil at resultatene skal vise alle linjene fra filen som inneholder ordet "debian" eller "Debian, uansett tilfelle.
$ egrep -i "search_string" filnavn
Du kan se hvordan -i-flagget hjalp meg med å hente alle linjene som inneholder søkestrengen gjennom et "ufølsomt" søk.
Eksempel 5: Søker etter en streng som et fullstendig ord og ikke som en understreng
Når du vanligvis søker etter en streng gjennom egrep, skriver den ut alle ordene som inneholder strengen som en understreng. Hvis du for eksempel ser etter strengen "on", vil alle ordene som inneholder strengen "on", som "on", "only", "monitor", "clone" osv. Hvis du vil at resultatene bare skal vise ordet “på” som et fullstendig ord og ikke som en understreng, kan du bruke -w-flagget med egrep.
Syntaks:
$ egrep -w "search_string" filnavnEksempel:
Her søker jeg etter strengen “on” i en eksempelfil:
$ egrep -i “on” samplefile.tekst
Du kan se i utgangen ovenfor at den også inneholder ordet "bare". Dette er imidlertid ikke det jeg vil ha, da jeg utelukkende leter etter ordet "på". Så dette er kommandoen jeg vil bruke i stedet:
$ egrep -iw “on” samplefile.tekst
Nå inkluderer søkeresultatene bare linjene som inneholder ordet "på" som et helt ord.
Eksempel 6: Skriv ut bare filnavnene som inneholder strengen
Noen ganger vil vi bare hente filnavnene som inneholder en bestemt streng, i stedet for å skrive ut linjene som inneholder den. Dette kan gjøres ved hjelp av -l (små bokstaver L) -flagget med egrep-kommandoen.
Syntaks:
$ egrep -l "søkestreng" filnavn_mønsterEksempel:
Her søker jeg etter strengen "sample" i alle .txt-filer i gjeldende katalog:
$ egrep -l prøve *.tekst
Søkeresultatene skriver bare ut navnet på filene som inneholder den angitte strengen.
Eksempel 7: Skriver bare søkestrengen fra en fil
I stedet for å skrive ut hele linjen som inneholder søkestrengen, kan du bruke egrep-kommandoen til å skrive ut selve strengen. Strengen skrives ut antall ganger den vises i den angitte filen.
Syntaks:
$ egrep -o "search_string" filnavnEksempel:
I dette eksemplet leter jeg etter ordet "Dette" i filen min.
$ egrep -o Denne prøvefilen_.tekst
Merk: Denne bruken av kommandoen er nyttig når du søker etter en streng basert på et vanlig uttrykksmønster. Vi vil forklare regelmessige uttrykk i detalj i et av de kommende eksemplene.
Eksempel 8: Viser n antall linjer før, etter eller rundt søkestrengen
Noen ganger er det veldig viktig å kjenne konteksten i en fil der en bestemt streng brukes. Egrep er nyttig i den forstand at den kan brukes til å vise linjen som inneholder søkestrengen, og også et spesifikt antall linjer før, etter og rundt den.
Dette er eksemplet på tekstfilen jeg skal bruke for å forklare de kommende eksemplene:
N antall linjer Etter søkestrengen:
Ved å bruke A-flagget på følgende måte vises linjen som inneholder søkestrengen og N antall linjer etter den:
$ egrep -AEksempel:
$ egrep -A 2 "sample" samplefile.tekst
N antall linjer Før søkestrengen:
Ved å bruke B-flagget på følgende måte vises linjen som inneholder søkestrengen og N antall linjer foran den:
$ egrep -BEksempel:
$ egrep -B 2 "sample" samplefile.tekst
N antall linjer Før søkestrengen:
Ved å bruke C-flagget på følgende måte vises linjen som inneholder søkestrengen og N antall linjer før og etter den:
$ egrep -CEksempel:
$ egrep -C 2 "sample" samplefile.tekst
Eksempel 9: Matching av regulært uttrykk i filer
Egrep-kommandoen blir kraftigere når du søker etter regulære uttrykk i stedet for solide søkestrenger i en fil.
Syntaks:
$ egrep "RegularExpressions" filnavnLa oss forklare hvordan du kan bruke Regular Expressions i egrep-søket:
Gjentakelsesoperatør | Bruk |
? | Den forrige varen før ? er valgfritt og matches maksimalt én gang
|
* | Det foregående elementet før * vil bli matchet null eller flere ganger |
+ | Det forrige elementet før + vil bli matchet en eller flere ganger |
n | Den forrige varen samsvarer nøyaktig med n antall ganger. |
n, | Det forrige elementet matches n eller flere ganger |
, m | Det forrige elementet samsvares maksimalt med m ganger |
n, m | Den forrige varen matches minst n ganger, men ikke mer enn m ganger |
Eksempel:
I det følgende eksemplet samsvares linjene som inneholder følgende uttrykk:
starter med "Gnome" og slutter med "programmer"
Eksempel 10: Fremhev søkestrengen
Når du setter miljøvariabelen GREP_OPTIONS som nedenfor, får du utdataene dine med søkestrengen / mønsteret uthevet i resultatene:
$ sudo eksport GREP_OPTIONS = '- color = auto' GREP_COLOR = '100; 8'Deretter kan du søke etter strengen på en hvilken som helst måte vi har beskrevet i eksemplene på denne artikkelen.
Eksempel 11: Utføre inverteringssøk i en fil
Med invertert søk, mener vi at egrep-kommandoen skriver ut alt i filen, bortsett fra linjene som inneholder søkestrengen. Vi vil bruke følgende eksempelfil for å forklare invertert søk gjennom egrep. Vi har skrevet ut innholdet i filen ved hjelp av cat-kommandoen:
Syntaks:
$ egrep -v "search_string" filnavnEksempel:
Fra eksempelfilen vi nevnte, vil vi utelate linjen som inneholder ordet "to" i utgangen, derfor vil vi bruke følgende kommando:
$ egrep -v "to" samplefile_.tekst
Du kan se hvordan utdataene inneholder alt fra eksempelfilen bortsett fra den andre linjen som inneholdt søkestrengen "to".
Eksempel 12: Utføre invertsøk basert på flere kriterier / søkemønster
Med flagget -v kan du også lage egrep-kommandoen for å utføre et invertert søk basert på mer enn én søkestreng / mønster.
Vi vil bruke den samme eksempelfilen som vi nevnte i eksempel 11 for å forklare dette scenariet.
Syntaks:
$ egrep -v -e "søkestreng" / "mønster" -e "søkestreng" / "mønster"… filnavn
Eksempel:
Fra eksempelfilen vi nevnte, vil vi utelate linjen (e) som inneholder ordene "en" og "to" i utgangen, derfor vil vi bruke følgende kommando:
$ egrep -v -e “one” -e “two” samplefile_.tekstVi har gitt to ord for å utelate ved hjelp av -e-flagget, derfor vil utgangen vises som følger:
Eksempel 13: Skrive ut antall linjer som samsvarer med søkestrengen
I stedet for å skrive ut den søkte strengen fra filen eller linjene som inneholder den, kan du bruke kommandoen egrep til å telle og skrive ut antall linjer som samsvarer med strengen. Denne tellingen kan hentes ved hjelp av -c-flagget med egrep-kommandoen.
Syntaks:
$ egrep -c "search_string" filnavnEksempel:
I dette eksemplet vil vi bruke -c-flagget til å telle antall linjer som inneholder ordet "This" i eksempelfilen:
$ egrep -c "Dette" filnavn
Du kan også bruke inverteringsfunksjonen her for å telle og skrive ut antall linjer som ikke inneholder søkestrengen:
$ grep -v -c "search_string" filnavn
Eksempel 14: Viser linjenummeret der strengen er matchet
Med -n-flagget kan du lage egrep-kommandoen for å skrive ut den samsvarende linjen sammen med linjenummeret som inneholder søkestrengen.
Syntaks:
$ grep -n "search_string" filnavnEksempel:
$ grep -n "This" samplefile_.tekst
Du kan se hvordan linjenumrene vises mot søkeresultatene.
Eksempel 15: Vis posisjonen i filen der søkestrengen samsvarer
Hvis du vil vite posisjonen i filen der søkestrengen finnes, kan du bruke -b-flagget med egrep-kommandoen.
$ grep -o -b "search_string" filnavnEksempel:
$ grep -o -b "This" samplefile_.tekst
Søkeresultatene skriver ut byteforskyvningen til filen der søkeordet finnes.Dette var en detaljert bruk av egrep-kommandoen. Ved å bruke en kombinasjon av flaggene som er forklart i denne artikkelen, kan du utføre mer meningsfylte og komplekse søk på filene dine.