Grep Command i Linux

Grep Command Linux



Kommandot Grep (global regular expression print) är det mest kraftfulla och regelbundet använda Linux-kommandoradsverktyget. Med Grep kan du söka efter användbar information genom att ange ett sökkriterium. Den söker efter ett visst uttrycksmönster i en specifik fil. När den hittar en matchning skrivs den ut alla rader i en fil som matchade det angivna mönstret. Det är praktiskt när du måste filtrera igenom stora loggfiler.

I den här artikeln kommer vi att förklara användningen av grep -verktyget med olika exempel. Vi kommer att använda Debian 10 för att förklara kommandon och metoder som nämns i den här artikeln.







Installera Grep

Grep installeras i de flesta Linux -distributionerna. Men om det saknas i ditt system kan du installera det med följande metod i Terminal:



$sudo apt-get install grepp

Använda Grep

Här är den grundläggande syntaxen för grep -kommandot. Det börjar med grep följt av några alternativ och sökkriterier och slutar sedan med filnamnet.



$grepp [alternativ]MÖNSTER[FIL...]

Sök efter filer

Om du vill söka efter ett filnamn i en katalog som innehåller en specifik sträng i den kan du använda grep på följande sätt:





$ls -de | grepp -isträng

Till exempel för att söka efter ett filnamn som innehåller en sträng testa , kommandot skulle vara:

$ls-de| grepp–Itesta

Detta kommando listar alla filer som innehåller strängen testa .



Sök efter en sträng i en fil

För att söka efter en sträng i en viss fil kan du använda följande kommandosyntax:

$greppsträngfilnamn

Till exempel för att söka efter en sträng testa i en fil med namnet testfil1 , vi har använt följande kommando :

$greppanställd testfil 1

Ovanstående utmatning har returnerat meningen från testfil1 som innehåller strängen anställd .

Sök efter en sträng i flera filer

För att söka efter en sträng i flera filer kan du använda följande kommandosyntax:

$greppstring filnamn1 filnamn2

Till exempel, för att söka efter en stränganställd i våra två filer testfile1 och testfile2, har vi använt följande kommando:

$greppanställd testfil 1 testfil 2

I kommandot ovan listas alla rader som innehåller strängmedarbetaren från båda filerna testfile1 och testfile2.

Du kan också använda ett jokertecken om alla filnamn börjar med samma text.

$greppsträngfilnamn*

Som om vi tar exemplet ovan där våra filnamn fanns testfile1 och testfile2 , kommandot skulle vara:

$greppanställd testfil*

Sök efter en sträng i en fil genom att ignorera strängens fall

Oftast har du stött på det när du söker efter något med grep men inte får någon utmatning. Detta händer på grund av en felaktig överensstämmelse vid sökning efter en sträng. Som i vårt exempel, om vi av misstag använder Anställd istället för anställd , kommer den att returnera noll eftersom vår fil innehåller strängen anställd med små bokstäver.

Du kan be grep att ignorera fallet med söksträng genom att använda –i flagga efter grep enligt följande:

$grepp–I strängfilnamn

Genom att använda –i -flaggan, kommer kommandot att utföra sökningen med okänslig bokstav och returnera alla rader som innehåller strängen anställd i det utan att ta hänsyn till bokstäverna är versaler eller små bokstäver.

Sök med det reguljära uttrycket

Om det används korrekt är det reguljära uttrycket en mycket effektiv funktion i grep. Med kommandot Grep kan du definiera ett reguljärt uttryck med ett start- och ett slutord. Genom att göra det behöver du inte skriva hela raden med kommandot grep. Följande syntax kan användas för detta ändamål.

$greppstartande sökord.*endingKeyword -filnamn

Till exempel, för att söka efter en rad i en fil med namnet testfile1 som börjar med strängen detta och slutar med strängdata, har vi använt följande kommando:

$greppdetta.*datatestfil1

Det kommer att skriva ut hela raden från testfil1 som innehåller uttrycket (startordet för detta och slutordet för slutordet).

Skriv ut ett visst antal rader efter/före söksträngen

Du kan också visa det specifika antalet rader i en fil före/efter en strängmatchning tillsammans med själva matchade strängen. Följande syntax kan användas för detta ändamål:

$grepp -TILL <N>strängfilnamn

Det kommer att visa N antal rader efter att strängen matchats i den angivna filen inklusive den matchade strängen.

Detta är till exempel vår exempelfil som heter testfil2 .

Följande kommando kommer att mata ut den matchade raden som innehåller strängen anställd , tillsammans med de 2 raderna efter det.

$grepp-TILL2–Jag anställd testfil2

På samma sätt, för att visa N antal rader före den matchade strängen i en specifik fil, använd följande syntax:

$grepp -B <N>strängfilnamn

För att visa N antal rader runt strängen i en specifik fil, använd följande syntax:

$grepp -C <N>strängfilnamn

Markerar sökningen

Grep som standard skriva ut matchade rader men visar inte vilken del av raden som matchas. Om du använder –färgalternativ med grep, kommer det att visa var bearbetningssträngarna visas i din fil. Grep använder som standard den röda färgen för markering.

Följande syntax kan användas för detta ändamål:

$greppsträngfilnamn--Färg

Räknar antalet matcher

Om du vill räkna hur många gånger ett visst ord visas i en specifik fil kan du använda grep med –c alternativet. Det returnerar bara antalet matcher snarare än själva matcherna. Följande syntax kan användas för detta ändamål:

$grepp–C string filnamn

Så här ser vår exempelfil ut:

Följande är ett exempel på ett kommando som returnerade antalet gånger ordet fil visas i en fil med namnet testfil3 .

Omvänd sökning

Ibland vill du utföra en omvänd sökning som visar alla rader utom det som matchade ingången. För att göra det, använd helt enkelt –v -flaggan följt av grep:

$grepp–V string filnamn

Till exempel för att visa alla rader i en fil testfil3 som inte innehåller ordet konto i dem, har vi använt följande kommando:

$grepp–V kontotestfil3

Använda Grep med andra kommandon

Grep kan också användas för att filtrera bort önskat resultat från olika kommandoutgångar. Till exempel från apt -installerad lista kommandoutmatning, du vill bara hitta paketen som installerades automatiskt, du kan filtrera bort resultatet med hjälp av grep enligt följande:

$benägen-installeratlista| greppautomatisk

På samma sätt ger lscpu detaljerad information om CPU: n. Om du bara är intresserad av informationen om CPU -arkitekturen kan du filtrera bort den med följande kommando:

$lscpu| greppArkitektur

I den här artikeln har vi beskrivit några exempel som hjälper dig att förstå grep -kommandon och dess användning under olika förhållanden. Att ha ett starkt grepp om grep -kommandot kan spara mycket tid om du behöver titta på stora konfigurationer eller logga filer och skumma användbar information genom dem.