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” filnamnExempel:
$ egrep debian exempelfil.TextI 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_patternExempel:
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" filnamnExempel:
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" filnamnExempel:
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_patternExempel:
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" filnamnExempel:
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 -AExempel:
$ 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 -BExempel:
$ 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 -CExempel:
$ 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" filnamnLå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" filnamnExempel:
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_.TextVi 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" filnamnExempel:
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" filnamnExempel:
$ 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" filnamnExempel:
$ 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.