grep

Linux grep-opdracht

Linux grep-opdracht
Grep is een van de handigste tools die je tot je beschikking kunt hebben. Dit opdrachtregelprogramma voert een zoekopdracht uit in datasets met platte tekst. Grep is eigenlijk een acroniem voor “globaal zoeken naar rregelmatig expressie en prinkelen”. Grep begon zijn reis als onderdeel van de UNIX-familie. Na verloop van tijd is het nu beschikbaar voor alle populaire platforms zoals Linux, Mac, BSD en zelfs Windows!

Heb je al eerder grep gebruikt?? Meestal kan de basis grep-truc het meeste werk doen. grep biedt echter talloze manieren om de zoekopdracht uit te voeren en de uitvoer af te stemmen op een meer bruikbare versie. Laten we in dit artikel eens kijken naar het gebruik van de grep-opdracht.

Grep-gebruik

Bestaan ​​verifiëren

Als je een Linux-distro gebruikt, heb je grep al geïnstalleerd. Voer de volgende opdracht uit in de terminal:.

grep --versie

Deze opdracht wordt gebruikt om de versie van de momenteel geïnstalleerde grep . weer te geven. Nu hebben we een demobestand nodig. In mijn geval genereer ik een tekstbestand dat alle geïnstalleerde pakketten op mijn systeem bevat.

Basis

Het basisgebruik van grep volgt de volgende structuur:.

grep

Of, voor een beter begrip, gebruik deze.

grep -e -f

In dit geval zal grep een zoekopdracht in het bestand uitvoeren en alle regels afdrukken die het patroon bevatten (zoekterm).

grep python ~/Desktop/PackageList.tekst

Grep doorzocht het bestand "PackageList".txt" die ik eerder heb gegenereerd en alle regels heb afgedrukt die "python" bevatten.

Dezelfde bewerking kan op een andere manier worden uitgevoerd. Bekijk het volgende voorbeeld.

kat ~/Desktop/PackageList.txt | grep python

Hier heb ik met het commando "cat" de inhoud van het bestand "PackageList" verzonden.txt" naar grep. Met behulp van de uitvoer van cat voerde grep de zoekopdracht uit en drukte de regels af die de zoekterm bevatten.

Nu komt er iets leuks. Je kunt letterlijk meerdere grep-commando's op elkaar stapelen.

kat ~/Desktop/PackageList.txt | grep - | grep p | grep python

De eerste grep filtert tot aan de regels met een koppelteken, de tweede filter tot aan de regels met p, en de laatste grep filtert tot aan de regels met python. Klinkt logisch?

Hoofdlettergevoeligheid

Bij het uitvoeren van een zoekopdracht is hoofdlettergevoeligheid een belangrijke vraag. grep is standaard hoofdlettergevoelig.

Zoeken naar "Python" zal bijvoorbeeld geen resultaat opleveren.

kat ~/Desktop/PackageList.txt | grep Python

Voeg de volgende optie toe om grep hoofdlettergebruik "ongevoelig" te maken:.

kat ~/Desktop/PackageList.txt | grep -i Python

Bestand zoeken

Laten we zeggen dat je een map hebt met talloze tekstbestanden. Uw doel is om de bestanden te identificeren die wel of geen patroon bevatten (zoekterm).

Ik vind deze methode erg handig bij het zoeken in een stapel logbestanden. Omdat ik niet de tijd heb om elk afzonderlijk bestand handmatig te openen en te controleren, heb ik grep om het werk voor mij te doen.

Gebruik voor het weergeven van bestanden die de overeenkomst bevatten de vlag "-l".

grep -l /zoek/directory/*

Zoals het resultaat suggereert, is de term "python" aanwezig in alle 3 bestanden die aanwezig zijn in de map "Desktop".

Gebruik de vlag "-L" voor het weergeven van bestanden zonder enige overeenkomst.

grep -L /zoek/directory/*

"Geen match.txt" is het enige bestand dat de term "python" niet bevat.

Omgekeerd zoeken

Het standaardgedrag van grep is om alleen de lijnen met het overeenkomende patroon af te drukken, rechts? Het is tijd om het proces om te keren. Deze keer drukken we alleen de lijnen ZONDER het bijpassende patroon.

Geef gewoon de "-v" optie door aan grep.

kat ~/Desktop/PackageList.txt | grep -i -v Python

Lijnen printen voor/na de wedstrijd

Standaard drukt grep alleen de regel af die overeenkomt met het zoekpatroon. Met deze techniek kun je grep ook vertellen om lijnen voor/na de wedstrijd af te drukken.

Gebruik de volgende structuur om lijnen voor de wedstrijd af te drukken:.

grep -B

Hier is 5 de nummerregel die grep zal afdrukken VOORDAT de overeenkomende regel.

Gebruik de volgende om lijnen na de wedstrijd af te drukken:.

grep -A

Hoe zit het met het afdrukken van zowel voor als na de overeenkomende regel?? Gebruik in dat geval de vlag "-C".

grep -C

Regelnummer

Wanneer grep de uitvoer toont, wordt het regelnummer niet vermeld. Gebruik voor de bijbehorende regelnummers de vlag "-n".

grep -n

Een woord

Als de vlag "-w" wordt gebruikt, zal grep het patroon als een heel woord behandelen.

grep -w

Zoeken naar grep beperken

Met Grep kunt u het aantal regels specificeren om in het bestand te zoeken. Deze methode is handig als je te maken hebt met een groot bestand (zoals een systeemlogboek). Gebruik de vlag "-m".

grep -m

Recursief zoeken

Het is een van de handigste functies die grep biedt voor intensief gebruik. Grep kan recursief een map doorzoeken en alle overeenkomsten vinden van alle bestanden die het tegenkomt.

grep -R

Of,

grep -r

Ik gebruik deze recursieve functie vaak samen met de vlag "-l".

Stille modus

Grep kan worden uitgevoerd in de "stille" modus. In de "stille" modus zal grep geen uitvoer naar de terminal afdrukken. In plaats daarvan wordt 0 geretourneerd (er is tenminste een overeenkomst gevonden) of 1 (geen overeenkomst gevonden).

grep -q
echo $?

Regex

Grep staat ook regex-zoekopdrachten (reguliere expressie) toe. Dit voegt een geheel nieuw niveau van complexiteit en bruikbaarheid toe van grep als zoekhulpmiddel.

U kunt bijvoorbeeld haakjes gebruiken om tegelijkertijd naar zowel "te" als "twee" te zoeken.

kat ~/Desktop/gpl-3.0.txt | grep t[wo]o

In dit volgende voorbeeld wordt de regel alleen afgedrukt als de overeenkomst helemaal aan het begin van de regel voorkomt.

grep ^GNU ~/Desktop/gpl-3.0.tekst

Wat betreft het matchen van het einde, gebruik deze.

grep you$ ~/Desktop/gpl-3.0.tekst

Als je Perl regex wilt gebruiken, gebruik dan de "-P" vlag. Het zal het patroon behandelen als Perl regex.

grep -P

Laatste gedachten

Grep biedt talloze manieren om de zoekfunctie aan te passen. De beschikbaarheid van regex ontsluit een geheel nieuwe horizon voor mogelijk gebruik van grep. Het leuke is dat je zowel algemene als Perl-regex kunt gebruiken; waar jij je prettig bij voelt.

Raadpleeg voor de meest gedetailleerde uitleg altijd de man-pagina.

man grep

Proost!

Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...
De scrollrichting van de muis en touchpads omkeren in Windows 10
Muis en Touchpads maken computergebruik niet alleen eenvoudig, maar ook efficiënter en minder tijdrovend. We kunnen ons een leven zonder deze apparate...
Hoe de muisaanwijzer en cursorgrootte, kleur en schema op Windows 10 te veranderen
De muisaanwijzer en cursor in Windows 10 zijn zeer belangrijke aspecten van het besturingssysteem. Dit geldt ook voor andere besturingssystemen, dus i...