Anonim

Wereldwijde reguliere expressie print of gewoon grep is een van de meest veelzijdige en meest voorkomende commando's in Unix- en Linux-systemen. De opdracht zoekt naar enkele of meerdere invoerbestanden en overeenkomende patroonlijnen. Als resultaat krijgt u een standaarduitvoer met de overeenkomende lijnen.

Als u geen bestand opgeeft, gebruikt grep de standaardinvoer voor de uitlezingen en dit is waarschijnlijk de uitvoer van een andere opdracht. Over het algemeen beschikt grep over eenvoudige syntaxis, of u het nu gebruikt met of zonder de bestandsnaam.

Dit artikel biedt u een snel overzicht van de grep-syntaxis en enkele basisopdrachten die u met of zonder de bestandsnaam kunt gebruiken.

Voordat je start

Alle grep-opdrachten volgen dezelfde syntaxis en elke parameter heeft een specifieke functie. Hier is de voorbeeldregel:

grep PATROON

U kunt een aantal OPTIES in grep gebruiken om de opdrachtuitvoer te besturen en het nummer begint bij nul. PATTERN geeft het zoekpatroon aan dat u wilt toepassen. Wat betreft het BESTAND, dit is waar de bestandsnaam of -namen naartoe gaan, maar de parameter kan op nul worden ingesteld.

Tekenreeks zoeken in opdrachtuitvoer

Zoals aangegeven, hoeft u geen specifieke invoerbestanden te gebruiken. De uitvoer van een ander commando kan in grep worden gebruikt om lijnen te krijgen die exact overeenkomen met een patroon. Dit kan worden gebruikt om te bepalen welke processen actief zijn op het systeem. Dit is een voorbeeldopdrachtsyntaxis:

$ ps -ef | grep www-gegevens

De output die je krijgt zou er ongeveer zo uit moeten zien:

www-data 18247 12675 4 16:00? 00:00:00 php-fpm: pool www
root 18272 17714 0 16:00 pts / 0 00:00:00 grep –color = auto –exclude-dir = .bzr –exclude-dir = CVS –exclude-dir = .git –exclude-dir = .hg –exclude- dir = .svn www-data
www-data 31147 12770 0 oktober 22? 00:05:51 nginx: werkproces
www-data 31148 12770 0 oktober 22? 00:00:00 nginx: cache manager proces

Er is een manier om de opdrachtregel met grep-processen uit te sluiten. Hiervoor moet je de $ ps -ef | gebruiken grep www-data | grep -v grep- opdracht.

Grep Word Search

U kunt grep-opdrachten gebruiken om naar specifieke woorden in bestanden op uw systeem te zoeken. Het is eigenlijk niet nodig om een ​​heel woord te typen. Je kunt bijvoorbeeld gewoon gnu gebruiken en het commando geeft alle woorden weer die deze drie letters bevatten. De syntaxis van de opdracht is:

$ grep gnu / usr / share / words

Na het uitvoeren van de opdracht ziet uw uitvoer er ongeveer zo uit:

Cygnus
gnoe
interregnum
lgnu9d
lignum
magnum
Magnuson
veenmos
wingnut

Aan de andere kant kunt u alleen naar dat specifieke woord of die reeks letters zoeken en al het andere uitsluiten. Hiervoor moet u -w of –word - regexp toevoegen aan de syntaxis. In dit geval ziet de voorbeeldopdracht er zo uit: $ grep -w gnu / usr / share / words .

Opmerking: voor grammaticale doeleinden hebben sommige opdrachten aan het eind een punt. Je hebt dat leesteken niet nodig voor grep. Sluit het uit wanneer u de opdracht kopieert / plakt.

Is Grep hoofdlettergevoelig?

Alle grep-opdrachten zijn standaard hoofdlettergevoelig. Dit betekent dat het gebruik van kleine letters en hoofdletters een verschil maakt in de opdracht zelf. U kunt echter - i ( - negeren - hoofdletters ) toevoegen aan de opdrachtregel en het systeem laten zoeken naar zowel hoofdletters als kleine letters.

Uw invoeropdracht kan er bijvoorbeeld als volgt uitzien: $ grep -i Zebra / usr / share / words . Hiermee kan de uitvoer overeenkomen met elke combinatie van hoofdletters en kleine letters bij het zoeken naar zebra's.

Lijn nummers

Gebruik de optie –lijnnummer of alleen -n om het aantal regels te bepalen met een tekenreeks die overeenkomt met een bepaald zoekpatroon. Als resultaat krijgt u een standaarduitvoer met een regelnummer ervoor.

De exacte opdracht kan er zo uitzien: $ grep -n 10000 / etc / services . Na uitvoering levert de uitvoer alle overeenkomsten die op 10.000 regels worden gevonden. Bekijk het onderstaande voorbeeld:

10423: ndmp 10000 / tcp
10424: ndmp 10000 / udp

Bestanden in mappen

U kunt een asterisk achter een grep-opdracht plaatsen in plaats van een bestandsnaam. Met behulp van de gnu- criteria ziet de opdracht er zo uit als $ grep gnu * en geeft de uitvoer de bestanden weer die gnu bevatten. Het is belangrijk op te merken dat dit soort opdracht een regel retourneert.

Opmerking: Met grep verwijst een regel naar een reeks tekens die tot een opgegeven pauze lopen. Tenzij u de zoekopdracht verfijnt, kan de uitvoer hele alinea's met informatie bevatten.

Neem de volgende stap met Grep

Deze gids geeft slechts een indruk van wat u met grep kunt doen. Het kan even duren om alle kansen te krijgen, maar de syntaxis volgt een vrij eenvoudig principe. En met enige oefening kunt u uw zoekopdrachten tot in de perfectie verfijnen, met of zonder de bestandsnaam.

Hoe grep je zonder de bestandsnaam