Egrep kommandoen hører til familien af grep kommandoen, som bruges til at søge efter mønstre i Linux. Hvis du har brugt grep-kommandoen, fungerer egrep på samme måde som grep -E (grep Extended regex’) gør. Egrep scanner en bestemt fil linje for linje og udskriver de(n) linje(r), der indeholder den søgestreng/det regelmæssige udtryk, der søges efter. I denne artikel vil vi forklare 15 nyttige eksempler på egrep-kommandoer, som vil hjælpe nybegyndere og selv eksperter med at udføre meningsfulde søgninger i LinuxVi har udført disse eksempler på et Debian 10 Buster-system, men de kan nemt kopieres på de fleste Linux-distroer.

Eksempel 1: Søgning efter en specifik streng i en fil

Dette er den mest almindelige anvendelse af egrep-kommandoen. Det, du gør, er, at du angiver en streng, som du vil søge efter, og det filnavn, som du vil slå denne streng op i. Resultatet viser så hele den linje, der indeholder den søgte streng.

Syntaks:

$ egrep “search_string” filnavn

Eksempel:

$ egrep debian samplefile.txt

I dette eksempel søgte jeg efter ordet “debian” i den angivne tekstfil. Du kan se, hvordan resultaterne viser hele den linje, 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 ligger i den samme mappe. Du skal bare være lidt mere specifik ved at angive et “mønster” for de søgte filer. Dette vil blive mere klart med det eksempel, vi vil præsentere.

Syntaks:

$ egrep “search_string” filnavn_mønster

Eksempel:

Her vil vi søge efter ordet “debian” i alle de .txt-filer ved at angive filnavnemønsteret på følgende måde:

$ egrep “debian” *.txt

Kommandoen har udskrevet alle linjerne sammen med de filnavne, der indeholder ordet “debian” fra alle .txt-filer i den aktuelle mappe.

Eksempel 3: Rekursiv søgning efter strengen i hele mappen

Når du ønsker at søge efter en streng i alle filerne fra en mappe og dens undermapper, kan du gøre det ved at bruge -r-flaget med egrep-kommandoen.

Syntaks:

$ egrep -r “search_string” *

Eksempel:

I dette eksempel søger jeg efter ordet “sample” i filerne i hele den aktuelle(Downloads)-mappe.

$ egrep -r “sample” *

Resultaterne indeholder alle de linjer, sammen med filnavne, der indeholder ordet “sample” fra alle filer i mappen Downloads og dens undermapper.

Eksempel 4: Udførelse af en søgning, der ikke tager hensyn til store og små bogstaver

Med flaget -i kan du bruge egrep-kommandoen til at udskrive resultaterne baseret på en søgestreng uden at skulle bekymre dig om dens store og små bogstaver.

Syntaks:

$ egrep -i “search_string” filnavn

Eksempel:

Her søger jeg efter ordet “debian”, og jeg ønsker, at resultaterne skal vise alle de linjer fra filen, der indeholder ordet “debian” eller “Debian”, uanset dets store og små bogstaver.

$ egrep -i “search_string” filnavn

Du kan se, hvordan -i-flaget hjalp mig med at hente alle de linjer, der indeholder søgestrengen gennem en case “insensitiv” søgning.

Eksempel 5: Søgning efter en streng som et helt ord og ikke som en delstreng

Når du normalt søger efter en streng gennem egrep, udskriver den alle de ord, der indeholder strengen som en delstreng. Hvis du f.eks. søger efter strengen “on”, vil du udskrive alle de ord, der indeholder strengen “on”, som ” on”, “only”, “monitor”, “clone” osv. Hvis du ønsker, at resultaterne kun skal vise ordet “on” som et helt ord og ikke som en delstreng, kan du bruge -w-flaget med egrep.

Syntaks:

$ egrep -w “search_string” filnavn

Eksempel:

Her søger jeg efter strengen “on” i en prøvefil:

$ egrep -i “on” prøvefil.txt

Du kan se i ovenstående output, at den også indeholder ordet “only”. Det er dog ikke det, jeg ønsker, da jeg udelukkende leder efter ordet “on”. Så dette er den kommando, jeg vil bruge i stedet:

$ egrep -iw “on” samplefile.txt

Nu omfatter mine søgeresultater kun de linjer, der indeholder ordet “on” som et helt ord.

Eksempel 6: Udskrivning af kun de filnavne, der indeholder strengen

Sommetider ønsker vi kun at hente de filnavne, der indeholder en bestemt streng, i stedet for at udskrive de linjer, der indeholder den. Dette kan gøres ved hjælp af flaget -l (lille L) med egrep-kommandoen.

Syntaks:

$ egrep -l “search_string” filnavn_mønster

Eksempel:

Her søger jeg efter strengen “sample” i alle .txt-filer i den aktuelle mappe:

$ egrep -l sample *.txt

Søgeresultaterne udskriver kun navnet på de filer, der indeholder den angivne streng.

Eksempel 7: Udskrivning kun af søgestrengen fra en fil

I stedet for at udskrive hele den linje, der indeholder søgestrengen, kan du bruge egrep-kommandoen til at udskrive selve strengen. Strengen vil blive udskrevet det antal gange, den optræder i den angivne fil.

Syntaks:

$ egrep -o “search_string” filnavn

Eksempel:

I dette eksempel søger jeg efter ordet “This” i min fil.

$ egrep -o This samplefile_.txt

Bemærk: Denne brug af kommandoen er praktisk, når du søger efter en streng baseret på et mønster med regulære udtryk. Vi vil forklare regulære udtryk i detaljer i et af de kommende eksempler.

Eksempel 8: Visning af n antal linjer før,efter eller omkring søgestrengen

Sommetider er det meget vigtigt at kende konteksten i en fil, hvor en bestemt streng bruges. egrep er praktisk i den forstand, at den kan bruges til at vise den linje, der indeholder søgestrengen, og også et bestemt antal linjer før, efter og omkring den.

Dette er den eksempeltekstfil, som jeg vil bruge til at forklare de kommende eksempler:

N antal linjer Efter søgestrengen:

Ved anvendelse af A-flaget på følgende måde vises den linje, der indeholder søgestrengen, og N antal linjer efter den:

$ egrep -A <N> “search_string” filnavn

Eksempel:

$ egrep -A 2 “sample” samplefile.txt

N antal linjer Før søgestrengen:

Ved anvendelse af B-flaget på følgende måde vises den linje, der indeholder søgestrengen, og N antal linjer før den:

$ egrep -B <N> “search_string” filnavn

Eksempel:

$ egrep -B 2 “sample” samplefile.txt

N antal linjer Før søgestrengen:

Hvis du bruger C-flaget på følgende måde, vises den linje, der indeholder søgestrengen, og N antal linjer før og efter den:

$ egrep -C <N> “search_string” filnavn

Eksempel:

$ egrep -C 2 “sample” samplefile.txt

Eksempel 9: Matchende regulære udtryk i filer

Egrep-kommandoen bliver mere kraftfuld, efterhånden som du søger efter regulære udtryk i stedet for faste søgestrenge i en fil.

Syntaks:

$ egrep “RegularExpressions” filnavn

Lad os forklare, hvordan du kan bruge Regular Expressions i din egrep-søgning:

Repetition operator Use
? Den foregående post før ? er valgfri og matches højst én gang
* Den forudgående post før * matches nul eller flere gange
+ Den forudgående post før + vil blive matchet en eller flere gange
{n} Den forudgående post bliver matchet 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} Den foregående post er matchet mindst n gange, men højst m gange

Eksempel:

I det følgende eksempel matches de linjer, der indeholder følgende udtryk:

begyndende med “Gnome” og sluttende med ” programs”

Eksempel 10: Fremhævning af søgestrengen

Når du indstiller miljøvariablen GREP_OPTIONS som nedenfor, får du dit output med søgestrengen/mønsteret fremhævet i resultaterne:

$ sudo export GREP_OPTIONS=’–color=auto’ GREP_COLOR=’100;8′

Du kan derefter søge efter strengen på en hvilken som helst måde, som vi har beskrevet i eksemplerne i denne artikel.

Eksempel 11: Udførelse af inverteret søgning i en fil

Med inverteret søgning mener vi, at egrep-kommandoen udskriver alt i filen, undtagen de linjer, der indeholder søgestrengen. Vi vil bruge følgende eksempelfil til at forklare invertsøgning gennem egrep. Vi har udskrevet indholdet af filen ved hjælp af kommandoen cat:

Syntaks:

$ egrep -v “search_string” filnavn

Eksempel:

Fra den nævnte eksempelfil ønsker vi at udelade den linje, der indeholder ordet “to” i output, derfor vil vi bruge følgende kommando:

$ egrep -v “two” samplefile_.txt

Du kan se, hvordan outputtet indeholder alt fra prøvefilen undtagen den anden linje, der indeholdt søgestrengen “to”.

Eksempel 12: Udførelse af omvendt søgning baseret på flere kriterier/søgemønstre

Med -v-flaget kan du også få egrep-kommandoen til at udføre en omvendt søgning baseret på mere end én søgestreng/søgemønster.

Vi vil bruge den samme prøvefil, som vi nævnte i eksempel 11, til at forklare dette scenarie.

Syntaks:

$ egrep -v -e “search_string”/”pattern” -e “search_string”/”pattern”
…. filnavn

Eksempel:

Fra den nævnte prøvefil ønsker vi at udelade den eller de linjer, der indeholder ordene “one” og “two” i output, derfor vil vi bruge følgende kommando:

$ egrep -v -e “one” -e “two” samplefile_.txt

Vi har angivet to ord, der skal udelades ved hjælp af -e-flaget, og derfor vil outputtet se ud som følger:

Eksempel 13: Udskrivning af antallet af linjer, der matcher den søgte streng

I stedet for at udskrive den søgte streng fra filen eller de linjer, der indeholder den, kan du bruge egrep-kommandoen til at tælle og udskrive antallet af linjer, der matcher strengen. Denne optælling kan hentes ved hjælp af -c-flaget med egrep-kommandoen.

Syntaks:

$ egrep -c “search_string” filnavn

Eksempel:

I dette eksempel vil vi bruge -c-flaget til at tælle antallet af linjer, der indeholder ordet “This” i vores eksempelfil:

$ egrep -c “This” filnavn

Du kan også bruge funktionen inverteret søgning her for at tælle og udskrive antallet af linjer, der ikke indeholder søgestrengen:

$ grep -v -c “search_string” filnavn

Eksempel 14: Visning af linjenummeret, hvor strengen er matchet

Med -n-flaget kan du få egrep-kommandoen til at udskrive den matchede linje sammen med det linjenummer, der indeholder søgestrengen.

Syntaks:

$ grep -n “search_string” filnavn

Eksempel:

$ grep -n “This” samplefile_.txt

Du kan se, hvordan linjenumrene vises i forhold til søgeresultaterne.

Eksempel 15: Visning af positionen i filen, hvor søgestrengen passer

Hvis du ønsker at kende positionen i filen, hvor søgestrengen findes, kan du bruge -b-flaget med egrep-kommandoen.

$ grep -o -b “search_string” filnavn

Eksempel:

$ grep -o -b “This” samplefile_.txt

Søgeresultaterne udskriver byteforskydningen i 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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.