grep

Linux egrep Kommando med exempel

Linux egrep Kommando med exempel
Kommrepet egrep tillhör familjen till grep-kommandot som används för mönstersökning i Linux. Om du har använt kommandot grep fungerar egrep på samma sätt som grep -E (grep Extended regex ') gör. Egrep skannar en specifik fil, rad till rad och skriver ut de (n) rad (er) som innehåller söksträngen / reguljärt uttryck. I den här artikeln kommer vi att förklara 15 användbara exempel på egrep-kommandon som hjälper nybörjare och till och med experter att utföra meningsfulla sökningar i Linux. Vi har utfört dessa exempel på ett Debian 10 Buster-system men de kan enkelt replikeras på de flesta Linux-distributioner.

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

Detta är den vanligaste användningen av egrep-kommandot. Vad du gör är att du anger en sträng som du vill söka efter och filnamnet som du vill slå upp strängen i. Resultatet visar sedan hela raden som innehåller den sökta strängen.

Syntax:

$ egrep “söksträng” filnamn

Exempel:

$ egrep debian exempelfil.Text

I det här exemplet 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öker 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 det gäller att tillhandahålla ett "mönster" för de sökta filerna. Detta kommer att bli tydligare med det exempel vi kommer att presentera.

Syntax:

$ egrep "söksträng" filnamn_pattern

Exempel:

Här kommer vi att söka efter ordet "debian" i alla .txt-filer genom att ange filnamnmönstret enligt följande:

$ egrep “debian” *.Text

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

Exempel 3: Sök rekursivt i 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 med flaggan -r med kommandot egrep.

Syntax:

$ egrep -r "söksträng" *

Exempel:

I det här exemplet letar jag efter ordet "exempel" i filerna i hela den aktuella katalogen (Nedladdningar).

$ egrep -r "exempel" *

Resultaten innehåller alla rader, tillsammans med filnamnen, som innehåller ordet "exempel" från alla filer i nedladdningskatalogen och dess underkataloger.

Exempel 4: Utföra en skiftlägeskänslig sökning

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

Syntax:

$ egrep -i "söksträng" filnamn

Exempel:

Här letar jag efter ordet "debian" och jag vill att resultaten ska visa alla rader från filen som innehåller ordet "debian" eller "Debian, oavsett fall.

$ egrep -i "söksträng" filnamn

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

Exempel 5: Söker efter en sträng som ett fullständigt ord och inte som en understräng

När du normalt söker efter en sträng via egrep, skrivs alla ord som innehåller strängen ut som en understräng. Om du till exempel letar efter strängen "on" skrivs alla ord som innehåller strängen "on" som "on", "only", "monitor", "clone", etc. Om du vill att resultaten endast ska visa ordet “på” som ett fullständigt ord och inte som en understräng kan du använda flaggan -w med egrep.

Syntax:

$ egrep -w "söksträng" filnamn

Exempel:

Här söker jag efter strängen "på" i en exempelfil:

$ egrep -i "på" exempelfil.Text

Du kan se i utgången ovan att den innehåller ordet ”bara” också. Detta är dock inte vad jag vill eftersom jag uteslutande letar efter ordet "på". Så det här är kommandot jag kommer att använda istället:

$ egrep -iw "på" exempelfil.Text

Nu inkluderar mina sökresultat endast de rader som innehåller ordet "på" som ett helt ord.

Exempel 6: Skriv bara ut filnamnen som innehåller strängen

Ibland vill vi bara hämta filnamnen som innehåller en viss sträng i stället för att skriva ut de rader som innehåller den. Detta kan göras med flaggan -l (gemener L) med kommandot egrep.

Syntax:

$ egrep -l "söksträng" filnamn_pattern

Exempel:

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

$ egrep -l prov *.Text

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

Exempel 7: Skriv bara ut 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 kommandot egrep för att skriva ut själva strängen. Strängen skrivs ut det antal gånger den visas i den angivna filen.

Syntax:

$ egrep -o "söksträng" filnamn

Exempel:

I det här exemplet letar jag upp ordet "Detta" i min fil.

$ egrep -o Detta exempelfil_.Text

Obs: Denna användning av kommandot är praktiskt när du söker efter en sträng baserat på ett reguljärt uttrycksmönster. Vi kommer att förklara regelbundna uttryck i detalj i ett av de kommande exemplen.

Exempel 8: Visar 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 specifik sträng används. Egrep är till nytta i den meningen att den kan användas för att visa raden som innehåller söksträngen och även ett specifikt antal rader före, efter och kring den.

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

N antal rader Efter söksträngen:

Med hjälp av A-flaggan på följande sätt visas raden som innehåller söksträngen och N antal rader efter den:

$ egrep -A "söksträng" filnamn

Exempel:

$ egrep -A 2 "exempel" exempelfil.Text

N antal rader Innan söksträngen:

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

$ egrep -B "söksträng" filnamn

Exempel:

$ egrep -B 2 "exempel" exempelfil.Text

N antal rader Innan söksträngen:

Med C-flaggan på följande sätt visas raden som innehåller söksträngen och N antal rader före och efter den:

$ egrep -C "söksträng" filnamn

Exempel:

$ egrep -C 2 "exempelfil".Text

Exempel 9: Matcha reguljärt uttryck i filer

Kommrepet egrep blir kraftfullare när du söker efter reguljära uttryck istället för solida söksträngar i en fil.

Syntax:

$ egrep "RegularExpressions" filnamn

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

Upprepningsoperatör Använda sig av
? Föregående objekt innan ? är valfritt och matchas maximalt en gång

* Föregående objekt före * matchas noll eller flera gånger
+ Föregående objekt före + matchas en eller flera gånger
n Föregående objekt matchas exakt n antal gånger.
n, Föregående objekt matchas n eller flera gånger
, m Föregående objekt matchas maximalt m gånger
n, m Föregående objekt matchas minst n gånger men inte mer än m gånger

Exempel:

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

börjar med "Gnome" och slutar med "program"

Exempel 10: Markera 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 resultaten:

$ sudo export GREP_OPTIONS = '- color = auto' GREP_COLOR = '100; 8'

Du kan sedan söka efter strängen på vilket sätt som vi har beskrivit i exemplen i den här artikeln.

Exempel 11: Utför inverteringssökning i en fil

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

Syntax:

$ egrep -v "söksträng" filnamn

Exempel:

Från den exempelfil vi nämnde vill vi utelämna raden som innehåller ordet "två" i utgången, därför kommer vi att använda följande kommando:

$ egrep -v "två" exempelfil_.Text

Du kan se hur utdata innehåller allt från exempelfilen förutom den andra raden som innehöll söksträngen "två".

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

Med flaggan -v kan du också göra kommandot egrep för att utföra en inverterad sökning baserad på mer än en söksträng / ett 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 "söksträng" / "mönster" -e "söksträng" / "mönster"
… filnamn

Exempel:

Från den exempelfil vi nämnde vill vi utelämna raden (arna) som innehåller orden "en" och "två" i utgången, därför använder vi följande kommando:

$ egrep -v -e "en" -e "två" exempelfil_.Text

Vi har tillhandahållit två ord för att utelämna med -e-flaggan, därför visas utdata som följer:

Exempel 13: Skriv ut antalet rader som matchar söksträngen

I stället för att skriva ut den sökta strängen från filen eller raderna som innehåller den, kan du använda kommandot egrep för att räkna och skriva ut antalet rader som matchas mot strängen. Detta antal kan hämtas med flaggan -c med kommandot egrep.

Syntax:

$ egrep -c "söksträng" filnamn

Exempel:

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

$ egrep -c "Detta" filnamn

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

$ grep -v -c "söksträng" filnamn

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

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

Syntax:

$ grep -n "söksträng" filnamn

Exempel:

$ grep -n "Denna" exempelfil_.Text

Du kan se hur linjenumren visas mot sökresultaten.

Exempel 15: Visa 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 "söksträng" filnamn

Exempel:

$ grep -o -b "Denna" exempelfil_.Text

Sökresultaten skriver ut byteförskjutningen för filen där sökordet finns.Detta var en detaljerad användning av egrep-kommandot. Genom att använda en kombination av flaggorna som förklaras i den här artikeln kan du göra mer meningsfulla och komplexa sökningar på dina filer.

Installera det senaste OpenRA-strategispelet på Ubuntu Linux
OpenRA är en Libre / Free Real Time Strategy-spelmotor som återskapar de tidiga Westwood-spelen som det klassiska Command & Conquer: Red Alert. Distri...
Installera senaste Dolphin Emulator för Gamecube & Wii på Linux
Dolphin Emulator låter dig spela dina valda Gamecube & Wii-spel på Linux Personal Computers (PC). Eftersom Dolphin Emulator är en fritt tillgänglig o...
Hur man använder GameConqueror Cheat Engine i Linux
Artikeln täcker en guide om hur du använder GameConqueror-fuskmotorn i Linux. Många användare som spelar spel på Windows använder ofta applikationen "...