Egrep-kommandot tillhör samma familj som grep-kommandot som används för att söka efter mönster i Linux. Om du har använt kommandot grep fungerar egrep på samma sätt som grep -E (grep Extended regex’) gör. Egrep genomsöker en specifik fil, rad för rad, och skriver ut den eller de rader som innehåller söksträngen/det reguljära uttrycket. I den här artikeln kommer vi att förklara 15 användbara exempel på egrep-kommandon som hjälper nybörjare och även experter att utföra meningsfulla sökningar i LinuxVi har utfört de här exemplen på ett Debian 10 Buster-system, men de kan enkelt replikeras på de flesta Linux-distributioner.

Exempel 1: Sökning efter en specifik sträng i en fil

Det här är det vanligaste användningsområdet för egrep-kommandot. Det du gör är att du anger en sträng som du vill söka efter och filnamnet som du vill leta upp strängen i. Resultatet visar sedan hela raden som innehåller den sökta strängen.

Syntax:

$ egrep ”search_string” filnamn

Exempel:

$ egrep debian samplefile.txt

I detta exempel sökte jag efter ordet ”debian” i den angivna textfilen. Du kan se hur resultaten visar hela raden som innehåller ordet ”debian”:

Exempel 2: Sökning efter en specifik sträng i flera filer

Med kommandot egrep kan du söka efter en sträng bland flera filer som finns i samma katalog. Du måste bara vara lite mer specifik när du anger ett ”mönster” för de sökta filerna. Detta kommer att bli tydligare med det exempel vi kommer att presentera.

Syntax:

$ egrep ”search_string” filename_pattern

Exempel:

Här kommer vi att söka efter ordet ”debian” i alla .txt-filer genom att ange filnamnsmönstret på följande sätt:

$ egrep ”debian” *.txt

Kommandot har skrivit ut alla rader, tillsammans med de filnamn som innehåller ordet ”debian” från alla .txt-filer i den aktuella katalogen.

Exempel 3: Rekursivt sökning av strängen i hela katalogen

När du vill söka efter en sträng i alla filer från en katalog och dess underkataloger kan du göra det genom att använda flaggan -r med egrep-kommandot.

Syntax:

$ egrep -r ”search_string” *

Exempel:

I det här exemplet söker jag efter ordet ”sample” i filerna i hela den aktuella (Downloads) katalogen.

$ egrep -r ”sample” *

Resultaten innehåller alla rader, tillsammans med filnamnen, som innehåller ordet ”sample” från alla filer i katalogen Downloads och dess underkataloger.

Exempel 4: Utföra en sökning som inte tar hänsyn till stor- och småskalighet

Med flaggan -i kan du använda egrep-kommandot för att skriva ut resultaten baserat på en söksträng utan att behöva oroa dig för dess stor- och småskalighet.

Syntax:

$ egrep -i ”search_string” filnamn

Exempel:

Här söker jag efter ordet ”debian” och jag vill att resultaten ska visa alla rader från filen som innehåller ordet ”debian” eller ”Debian”, oavsett dess versal.

$ egrep -i ”search_string” filnamn

Du kan se hur flaggan -i hjälpte mig att hämta alla rader som innehåller söksträngen genom en ”okänslig” sökning med avseende på storleken.

Exempel 5: Sökning efter en sträng som ett helt ord och inte som en delsträng

När du normalt söker efter en sträng genom egrep skrivs alla ord som innehåller strängen som en delsträng ut. Om du till exempel söker efter strängen ”on” kommer du att skriva ut alla ord som innehåller strängen ”on” som ” on”, ”only”, ”monitor”, ”clone” osv. Om du vill att resultaten endast ska visa ordet ”on” som ett helt ord och inte som en delsträng kan du använda flaggan -w med egrep.

Syntax:

$ egrep -w ”search_string” filnamn

Exempel:

Här söker jag efter strängen ”on” i en exempelfil:

$ egrep -i ”on” samplefile.txt

Du kan se i ovanstående utdata att den också innehåller ordet ”only”. Detta är dock inte vad jag vill ha eftersom jag uteslutande letar efter ordet ”on”. Så det här kommandot kommer jag att använda istället:

$ egrep -iw ”on” samplefile.txt

Nu innehåller mina sökresultat endast de rader som innehåller ordet ”on” som ett helt ord.

Exempel 6: Utskrift av endast de filnamn som innehåller strängen

Ibland vill vi endast hämta de filnamn som innehåller en viss sträng, i stället för att skriva ut de rader som innehåller strängen. Detta kan göras med hjälp av flaggan -l (L med liten bokstav) med kommandot egrep.

Syntax:

$ egrep -l ”search_string” filename_pattern

Exempel:

Här söker jag efter strängen ”sample” i alla .txt-filer i den aktuella katalogen:

$ egrep -l sample *.txt

Sökresultaten skriver bara ut namnet på de filer som innehåller den angivna strängen.

Exempel 7: Utskrift av endast söksträngen från en fil

Istället för att skriva ut hela raden som innehåller söksträngen kan du använda egrep-kommandot för att skriva ut själva strängen. Strängen skrivs ut det antal gånger den förekommer i den angivna filen.

Syntax:

$ egrep -o ”search_string” filnamn

Exempel:

I det här exemplet söker jag efter ordet ”This” i min fil.

$ egrep -o This samplefile_.txt

Anmärkning: Den här användningen av kommandot är praktisk när du söker efter en sträng utifrån ett mönster för reguljära uttryck. Vi kommer att förklara reguljära uttryck i detalj i ett av de kommande exemplen.

Exempel 8: Visa n antal rader före, efter eller runt söksträngen

Ibland är det mycket viktigt att känna till sammanhanget i en fil där en viss sträng används. egrep kommer väl till pass i det avseendet att det kan användas för att visa den rad som innehåller söksträngen och även ett visst antal rader före, efter och runt den.

Detta är den exempeltextfil som jag kommer att använda för att förklara de kommande exemplen:

N antal rader Efter söksträngen:

Om du använder flaggan A på följande sätt visas raden som innehåller söksträngen och N antal rader efter den:

$ egrep -A <N> ”search_string” filnamn

Exempel:

$ egrep -A 2 ”sample” samplefile.txt

N antal rader före söksträngen:

Användning av B-flaggan på följande sätt visar den rad som innehåller söksträngen och N antal rader före den:

$ egrep -B <N> ”search_string” filnamn

Exempel:

$ egrep -B 2 ”sample” samplefile.txt

N antal rader Före söksträngen:

Användning av C-flaggan på följande sätt visar den rad som innehåller söksträngen och N antal rader före och efter den:

$ egrep -C <N> ”search_string” filnamn

Exempel:

$ egrep -C 2 ”sample” samplefile.txt

Exempel 9: Matcha reguljära uttryck i filer

Egrep-kommandot blir mer kraftfullt när du söker efter reguljära uttryck i stället för fasta söksträngar i en fil.

Syntax:

$ egrep ”RegularExpressions” filnamn

Låt oss förklara hur du kan använda reguljära uttryck i din egrep-sökning:

Repetition operator Use
? Den föregående punkten före ? är valfri och matchas högst en gång
* Den föregående punkten före * matchas noll eller flera gånger
+ Den föregående punkten före + matchas en eller flera gånger
{n} Den föregående punkten matchas exakt n antal gånger.
{n,} Det föregående objektet matchas n eller fler gånger
{,m} Det föregående objektet matchas högst m gånger
{n,m} Den föregående punkten matchas minst n gånger men högst m gånger

Exempel:

I följande exempel matchas de rader som innehåller följande uttryck:

som börjar med ”Gnome” och slutar med ” programs”

Exempel 10: Markering av söksträngen

När du ställer in miljövariabeln GREP_OPTIONS enligt nedan får du utdata med söksträngen/mönstret markerat i resultatet:

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

Du kan sedan söka efter strängen på vilket sätt som helst som vi har beskrivit i exemplen i denna artikel.

Exempel 11: Utföra inverterad sökning i en fil

Med inverterad sökning menar vi att egrep-kommandot skriver ut allt i filen, utom de rader som innehåller söksträngen. Vi kommer att använda följande exempelfil för att förklara inverterad sökning med hjälp av egrep. Vi har skrivit ut innehållet i filen med hjälp av kommandot cat:

Syntax:

$ egrep -v ”search_string” filnamn

Exempel:

Från exempelfilen vi nämnde vill vi utelämna den rad som innehåller ordet ”two” i resultatet, därför använder vi följande kommando:

$ egrep -v ”two” samplefile_.txt

Du kan se hur utmatningen innehåller allt från provfilen utom den andra raden som innehöll söksträngen ”two”.

Exempel 12: Utföra inverterad sökning baserad på flera kriterier/sökmönster

Med flaggan -v kan du också få egrep-kommandot att utföra en inverterad sökning baserad på mer än en söksträng/mönster.

Vi kommer att använda samma exempelfil som vi nämnde i exempel 11 för att förklara detta scenario.

Syntax:

$ egrep -v -e ”search_string”/”pattern” -e ”search_string”/”pattern”
…. filename

Exempel:

Från exempelfilen vi nämnde vill vi utelämna den eller de rader som innehåller orden ”one” och ”two” i resultatet, därför använder vi följande kommando:

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

Vi har angett två ord att utelämna med hjälp av flaggan -e, därför kommer utmatningen att se ut på följande sätt:

Exempel 13: Utskrift av antalet rader som stämmer överens med söksträngen

Istället för att skriva ut den sökta strängen från filen eller de rader som innehåller den, kan du använda kommandot egrep för att räkna och skriva ut antalet rader som stämmer överens med strängen. Denna räkning kan hämtas med hjälp av flaggan -c med egrep-kommandot.

Syntax:

$ egrep -c ”search_string” filnamn

Exempel:

I det här exemplet använder vi flaggan -c för att räkna antalet rader som innehåller ordet ”This” i vår exempelfil:

$ egrep -c ”This” filnamn

Du kan också använda funktionen för inverterad sökning här för att räkna och skriva ut antalet rader som inte innehåller söksträngen:

$ grep -v -c ”search_string” filnamn

Exempel 14: Visa radnumret där strängen matchas

Med flaggan -n kan du få egrep-kommandot att skriva ut den matchade raden tillsammans med det radnummer som innehåller söksträngen.

Syntax:

$ grep -n ”search_string” filnamn

Exempel:

$ grep -n ”This” samplefile_.txt

Du kan se hur radnumren visas mot sökresultaten.

Exempel 15: Visar positionen i filen där söksträngen matchar

Om du vill veta positionen i filen där söksträngen finns kan du använda flaggan -b med kommandot egrep.

$ grep -o -b ”search_string” filnamn

Exempel:

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

Sökresultatet skriver ut byteoffset i filen där sökordet existerar.Det här var en detaljerad användning av egrep-kommandot. Genom att använda en kombination av de flaggor som förklaras i den här artikeln kan du utföra mer meningsfulla och komplexa sökningar i dina filer.

Lämna ett svar

Din e-postadress kommer inte publiceras.