Eksempel 1: Søgning efter en bestemt streng i en fil
Dette er den mest almindelige anvendelse af egrep-kommandoen. Hvad du gør er, at du angiver en streng, som du vil søge efter, og det filnavn, som du vil slå den streng op i. Resultatet viser derefter hele linjen, der indeholder den søgte streng.
Syntaks:
$ egrep “search_string” filnavnEksempel:
$ egrep debian prøvefil.txtI dette eksempel søgte jeg efter ordet “debian” i den angivne tekstfil. Du kan se, hvordan resultaterne viser hele linjen, der indeholder ordet "debian":
Eksempel 2: Søgning efter en bestemt streng i flere filer
Med egrep-kommandoen kan du søge efter en streng blandt flere filer, der findes i samme bibliotek. Du skal bare være lidt mere specifik i at give et "mønster" til de søgte filer. Dette vil blive mere tydeligt med det eksempel, vi vil præsentere.
Syntaks:
$ egrep "søgestreng" filnavn_modelEksempel:
Her vil vi søge efter ordet "debian" i alle .txt-filer ved at angive filnavnet som følger:
$ egrep “debian” *.txt
Kommandoen har udskrevet alle linjer sammen med filnavne, der indeholder ordet "debian" fra alle .txt-filer i det aktuelle bibliotek.
Eksempel 3: Rekursiv søgning i strengen i hele biblioteket
Når du vil søge efter en streng i alle filerne fra et bibliotek og dets underkataloger, kan du gøre det ved at bruge flaget -r med kommandoen egrep.
Syntaks:
$ egrep -r "søgestreng" *Eksempel:
I dette eksempel søger jeg efter ordet "prøve" i filerne i hele den aktuelle (Downloads) mappe.
$ egrep -r "prøve" *
Resultaterne indeholder alle linjerne sammen med filnavne, der indeholder ordet "prøve" fra alle filerne i Downloads-biblioteket og dets underkataloger.
Eksempel 4: Udfør en sagfølsom søgning
Med -i-flag kan du bruge kommandoen egrep til at udskrive resultaterne baseret på en søgestreng uden at skulle bekymre sig om sagen.
Syntaks:
$ egrep -i "search_string" filnavnEksempel:
Her søger jeg efter ordet "debian", og jeg vil have, at resultaterne skal vise alle linjer fra filen, der indeholder ordet "debian" eller "Debian, uanset om det er tilfældet.
$ egrep -i "search_string" filnavn
Du kan se, hvordan -i-flag hjalp mig med at hente alle de linjer, der indeholder søgestrengen gennem en sag "ufølsom" søgning.
Eksempel 5: Søgning efter en streng som et fuldt ord og ikke som en understreng
Når du normalt søger efter en streng gennem egrep, udskriver den alle de ord, der indeholder strengen som en understreng. Hvis du f.eks. Ser op til strengen "on", udskrives alle de ord, der indeholder strengen "on" som "on", "only", "monitor", "clone" osv. Hvis du kun ønsker, at resultaterne kun viser ordet "til" som et fuldt ord og ikke som en understreng, kan du bruge -w-flag med egrep.
Syntaks:
$ egrep -w "search_string" filnavnEksempel:
Her søger jeg efter strengen "on" i en prøvefil:
$ egrep -i "på" prøvefil.txt
Du kan se i ovenstående output, at den også indeholder ordet “kun”. Dette er dog ikke det, jeg ønsker, da jeg udelukkende leder efter ordet "til". Så dette er den kommando, jeg vil bruge i stedet:
$ egrep -iw "på" samplefile.txt
Nu inkluderer mine søgeresultater kun de linjer, der indeholder ordet "til" som et helt ord.
Eksempel 6: Udskriv kun filnavne, der indeholder strengen
Nogle gange vil vi kun hente filnavne, der indeholder en bestemt streng, i stedet for at udskrive de linjer, der indeholder den. Dette kan gøres ved hjælp af -l (små bogstaver L) flag med kommandoen egrep.
Syntaks:
$ egrep -l "search_string" filnavn_patternEksempel:
Her søger jeg efter strengen "prøve" i alle .txt-filer i det aktuelle bibliotek:
$ egrep -l prøve *.txt
Søgeresultaterne udskriver kun navnet på de filer, der indeholder den angivne streng.
Eksempel 7: Udskriv kun søgestrengen fra en fil
I stedet for at udskrive hele linjen, der indeholder søgestrengen, kan du bruge kommandoen egrep til at udskrive selve strengen. Strengen udskrives det antal gange, den vises i den angivne fil.
Syntaks:
$ egrep -o "search_string" filnavnEksempel:
I dette eksempel leder jeg efter ordet "Dette" i min fil.
$ egrep -o Denne eksempelfil_.txt
Bemærk: Denne brug af kommandoen er praktisk, når du søger efter en streng baseret på et regulært udtryksmønster. Vi vil forklare regelmæssige udtryk i detaljer i et af de kommende eksempler.
Eksempel 8: Vis n antal linjer før, efter eller omkring søgestrengen
Nogle gange er det meget vigtigt at kende konteksten i en fil, hvor en bestemt streng bruges. Egrep er praktisk i den forstand, at det kan bruges til at vise linjen, der indeholder søgestrengen, og også et bestemt antal linjer før, efter og omkring den.
Dette er eksemplet på tekstfilen, som jeg vil bruge til at forklare de kommende eksempler:
N antal linjer Efter søgestrengen:
Brug af A-flag på følgende måde viser linjen, der indeholder søgestrengen og N antal linjer efter den:
$ egrep -AEksempel:
$ egrep -A 2 "prøve" prøvefil.txt
N antal linjer Før søgestrengen:
Brug af B-flag på følgende måde viser linjen, der indeholder søgestrengen og N antal linjer foran den:
$ egrep -BEksempel:
$ egrep -B 2 "prøve" prøvefil.txt
N antal linjer Før søgestrengen:
Brug af C-flag på følgende måde viser linjen, der indeholder søgestrengen og N antal linjer før og efter den:
$ egrep -CEksempel:
$ egrep -C 2 "prøve" prøvefil.txt
Eksempel 9: Matching af regulært udtryk i filer
Kommandoen egrep bliver mere kraftfuld, når du søger efter regulære udtryk i stedet for solide søgestrenge i en fil.
Syntaks:
$ egrep "RegularExpressions" filnavnLad os forklare, hvordan du kan bruge Regular Expressions i din egrep-søgning:
Gentagelsesoperatør | Brug |
? | Den foregående vare før ? er valgfri og matches maksimalt én gang
|
* | Det foregående element før * matches nul eller flere gange |
+ | Det foregående element før + vil blive matchet en eller flere gange |
n | Den foregående vare matches nøjagtigt n antal gange. |
n, | Det foregående element matches n eller flere gange |
, m | Det foregående element matches maksimalt m gange |
n, m | Det foregående element matches mindst n gange, men ikke mere end m gange |
Eksempel:
I det følgende eksempel matches linjerne, der indeholder følgende udtryk:
startende med "Gnome" og slutter med "programmer"
Eksempel 10: Fremhæv søgestrengen
Når du indstiller miljøvariablen GREP_OPTIONS som nedenfor, får du din output med søgestrengen / mønsteret fremhævet i resultaterne:
$ sudo eksport GREP_OPTIONS = '- color = auto' GREP_COLOR = '100; 8'Du kan derefter søge efter strengen på enhver måde, som vi har beskrevet i eksemplerne i denne artikel.
Eksempel 11: Udfør invertsøgning i en fil
Ved invertsøgning mener vi, at egrep-kommandoen udskriver alt i filen undtagen de linjer, der indeholder søgestrengen. Vi bruger følgende eksempelfil til at forklare inverteret søgning gennem egrep. Vi har udskrevet indholdet af filen ved hjælp af kommandoen cat:
Syntaks:
$ egrep -v "search_string" filnavnEksempel:
Fra den eksempelfil, vi nævnte, vil vi udelade linjen, der indeholder ordet "to" i output, derfor vil vi bruge følgende kommando:
$ egrep -v "to" prøvefil_.txt
Du kan se, hvordan output indeholder alt fra prøvefilen undtagen den anden linje, der indeholdt søgestrengen "to".
Eksempel 12: Udfør invertsøgning baseret på flere kriterier / søgemønster
Med -v-flag kan du også lave kommandoen egrep til at udføre en inverteret søgning baseret på mere end en søgestreng / mønster.
Vi bruger den samme prøvefil som vi nævnte i eksempel 11 til at forklare dette scenarie.
Syntaks:
$ egrep -v -e "søgestreng" / "mønster" -e "søgestreng" / "mønster"… filnavn
Eksempel:
Fra den eksempelfil, vi nævnte, vil vi udelade de linjer, der indeholder ordene "en" og "to" i output, derfor vil vi bruge følgende kommando:
$ egrep -v -e “en” -e “to” prøvefil_.txtVi har leveret to ord til at udelade ved hjælp af -e-flag, derfor vises output som følger:
Eksempel 13: Udskrivning af antallet af linjer, der matcher søgestrengen
I stedet for at udskrive den søgte streng fra filen eller linjerne, der indeholder den, kan du bruge kommandoen egrep til at tælle og udskrive antallet af linjer, der matches med strengen. Denne optælling kan hentes ved hjælp af -c flag med kommandoen egrep.
Syntaks:
$ egrep -c "search_string" filnavnEksempel:
I dette eksempel bruger vi -c-flag til at tælle antallet af linjer, der indeholder ordet "Dette" i vores prøvefil:
$ egrep -c "Dette" filnavn
Du kan også bruge inverter-søgefunktionen her til at tælle og udskrive antallet af linjer, der ikke indeholder søgestrengen:
$ grep -v -c "search_string" filnavn
Eksempel 14: Visning af linjenummer, hvor strengen matches
Med -n-flag kan du lave kommandoen egrep til at udskrive den matchede linje sammen med linjenummeret, der indeholder søgestrengen.
Syntaks:
$ grep -n "search_string" filnavnEksempel:
$ grep -n "Denne" prøvefil_.txt
Du kan se, hvordan linjenumrene vises i forhold til søgeresultaterne.
Eksempel 15: Visning af positionen i filen, hvor søgestrengen matcher
Hvis du vil vide placeringen i filen, hvor søgestrengen findes, kan du bruge -b flag med kommandoen egrep.
$ grep -o -b "search_string" filnavnEksempel:
$ grep -o -b "Denne" prøvefil_.txt
Søgeresultaterne udskriver byteforskydningen af den fil, hvor søgeordet findes.Dette var en detaljeret brug af egrep-kommandoen. Ved at bruge en kombination af de flag, der er forklaret i denne artikel, kan du udføre mere meningsfulde og komplekse søgninger på dine filer.