Grep-opdracht in Linux

Grep Command Linux



De opdracht Grep (global regular expression print) is het krachtigste en meest gebruikte Linux-opdrachtregelprogramma. Met Grep kunt u nuttige informatie zoeken door een zoekcriterium op te geven. Het zoekt naar een bepaald expressiepatroon in een gespecificeerd bestand. Wanneer het een overeenkomst vindt, worden alle regels van een bestand afgedrukt die overeenkomen met het opgegeven patroon. Het is handig wanneer u door grote logbestanden moet filteren.

In dit artikel zullen we het gebruik van grep-hulpprogramma uitleggen met verschillende voorbeelden. We zullen Debian 10 gebruiken voor het uitleggen van de commando's en methoden die in dit artikel worden genoemd.







Grep . installeren

Grep wordt in de meeste Linux-distributies geïnstalleerd. Als het echter op uw systeem ontbreekt, kunt u het installeren met de volgende methode in Terminal:



$sudo apt-get install greep

Grep . gebruiken

Hier is de basissyntaxis van het grep-commando. Het begint met grep gevolgd door enkele opties en zoekcriteria en eindigt dan met de bestandsnaam.



$greep [opties]PATROON[HET DOSSIER...]

Zoeken naar bestanden

Om te zoeken naar een bestandsnaam in een map die een specifieke tekenreeks bevat, kunt u grep op de volgende manier gebruiken:





$ls -de | greep -lsnaar

Als u bijvoorbeeld wilt zoeken naar een bestandsnaam die een tekenreeks bevat: toets , zou het commando zijn:

$ls-de| greep-ltoets

Met deze opdracht worden alle bestanden weergegeven die de tekenreeks bevatten toets .



Zoeken naar een tekenreeks in een bestand

Om naar een tekenreeks in een bepaald bestand te zoeken, kunt u de volgende opdrachtsyntaxis gebruiken:

$greepstring bestandsnaam

Om bijvoorbeeld naar een tekenreeks te zoeken toets in een bestand met de naam testbestand1 , we hebben de volgende opdracht gebruikt: :

$greepwerknemer testbestand

De bovenstaande uitvoer heeft de zin van de geretourneerd testbestand1 die de string bevat medewerker .

Zoeken naar een string in meerdere bestanden

Als u in meerdere bestanden naar een tekenreeks wilt zoeken, kunt u de volgende opdrachtsyntaxis gebruiken:

$greepstring bestandsnaam1 bestandsnaam2

Om bijvoorbeeld naar een string-medewerker te zoeken in onze twee bestanden testfile1 en testfile2, hebben we de volgende opdracht gebruikt:

$greepwerknemer testbestand1 testbestand2

Het bovenstaande commando geeft een lijst van alle regels die de string werknemer bevatten uit zowel de bestanden testfile1 als testfile2.

U kunt ook een jokerteken gebruiken als alle bestandsnamen met dezelfde tekst beginnen.

$greepstring bestandsnaam*

Zoals, als we het bovenstaande voorbeeld nemen waarin onze bestandsnamen waren testfile1 en testfile2 , zou het commando zijn:

$greepwerknemer testbestand*

Zoek naar een tekenreeks in een bestand door de hoofdletters van de tekenreeks te negeren

Meestal ben je dat tegengekomen wanneer je naar iets zoekt met grep maar geen uitvoer ontvangt. Dit gebeurt vanwege een niet-overeenkomende hoofdletter tijdens het zoeken naar een tekenreeks. Zoals in ons voorbeeld, als we per ongeluk . gebruiken Medewerker in plaats van medewerker , het zal nul retourneren omdat ons bestand de string bevat medewerker in kleine letters.

U kunt grep vertellen om het geval van zoekreeks te negeren door de vlag –i na de grep als volgt te gebruiken:

$greep-i tekenreeks bestandsnaam

Door de vlag –i te gebruiken, voert de opdracht de hoofdletterongevoelige zoekopdracht uit en retourneert alle regels die de tekenreeks bevatten medewerker erin zonder rekening te houden met de letters in hoofdletters of kleine letters.

Zoeken met de reguliere expressie

Indien correct gebruikt, is de reguliere expressie een zeer effectieve functie in grep. Met het Grep-commando kunt u een reguliere expressie definiëren met een begin- en een eindsleutelwoord. Door dit te doen, hoeft u niet de hele regel in te typen met het grep-commando. Hiervoor kan de volgende syntaxis worden gebruikt.

$greepstartzoekwoord.*endKeyword bestandsnaam

Om bijvoorbeeld te zoeken naar een regel in een bestand met de naam testfile1 die begint met de tekenreeks this en eindigt met de tekenreeksgegevens, hebben we de volgende opdracht gebruikt:

$greepdit.*gegevens testbestand1

Het zal de hele regel afdrukken vanaf de testbestand1 die de uitdrukking bevat (beginsleutelwoord dit en eindsleutelwoordgegevens).

Bepaal een bepaald aantal regels na/voor de zoekreeks

U kunt ook het specifieke aantal regels in een bestand voor/na een tekenreeksovereenkomst weergeven, samen met de overeenkomende tekenreeks zelf. Hiervoor kan de volgende syntaxis worden gebruikt:

$greep -TOT <N>string bestandsnaam

Het zal N aantal regels weergeven nadat de tekenreeks is gekoppeld aan het opgegeven bestand, inclusief de overeenkomende tekenreeks.

Dit is bijvoorbeeld ons voorbeeldbestand met de naam testbestand2 .

De volgende opdracht geeft de overeenkomende regel weer die de tekenreeks bevat: medewerker , samen met de 2 regels erna.

$greep-TOT2–i werknemer testbestand2

Evenzo, om N aantal regels vóór de overeenkomende tekenreeks in een specifiek bestand weer te geven, gebruikt u de volgende syntaxis:

$greep -B <N>string bestandsnaam

Gebruik de volgende syntaxis om N aantal regels rond de tekenreeks in een specifiek bestand weer te geven:

$greep -C <N>string bestandsnaam

De zoekopdracht markeren

Grep drukt standaard overeenkomende lijnen af, maar laat niet zien welk deel van de lijn overeenkomt. Als u de optie –color met grep gebruikt, wordt weergegeven waar de bewerkingsreeksen in uw bestand verschijnen. Grep gebruikt standaard de rode kleur voor markering.

Hiervoor kan de volgende syntaxis worden gebruikt:

$greepstring bestandsnaam--kleur

Het aantal wedstrijden tellen

Als je wilt tellen hoe vaak een bepaald woord in een specifiek bestand voorkomt, kun je de grep met -c optie gebruiken. Het retourneert alleen het aantal overeenkomsten in plaats van de overeenkomsten zelf. Hiervoor kan de volgende syntaxis worden gebruikt:

$greep-c string bestandsnaam

Dit is ons voorbeeldbestand dat er als volgt uitziet:

Hieronder volgt een voorbeeld van een opdracht die het aantal keren dat het woord . heeft geretourneerd het dossier verscheen in een bestand met de naam testbestand3 .

Omgekeerd zoeken

Soms wilt u een omgekeerde zoekopdracht uitvoeren waarbij alle regels worden weergegeven, behalve die welke overeenkomen met de invoer. Gebruik hiervoor de vlag –v gevolgd door grep:

$greep-v string bestandsnaam

Om bijvoorbeeld alle regels in een bestand weer te geven testbestand3 die het woord account niet bevatten, hebben we het volgende commando gebruikt:

$greep–v account testbestand3

Grep gebruiken met andere opdrachten

Grep kan ook worden gebruikt om het vereiste resultaat uit verschillende uitvoeropdrachten te filteren. Bijvoorbeeld uit de apt -geïnstalleerde lijst opdrachtuitvoer wilt, alleen de pakketten wilt vinden die automatisch zijn geïnstalleerd, kunt u het resultaat als volgt uitfilteren met grep:

$geschikt--geïnstalleerdlijst| greepautomatisch

Op dezelfde manier biedt lscpu gedetailleerde informatie over de CPU. Als u alleen geïnteresseerd bent in de informatie over de CPU-architectuur, kunt u deze uitfilteren met de volgende opdracht:

$lscpu| greeparchitectuur

In dit artikel hebben we enkele voorbeelden beschreven die u zullen helpen bij het begrijpen van de grep-opdrachten en het gebruik ervan in verschillende omstandigheden. Een sterke grip op het grep-commando kan veel tijd besparen als u naar grote configuratie- of logbestanden moet kijken en er nuttige informatie doorheen moet bladeren.