GREP in Linux begrijpen: gebruik en toepassingen

GREP in Linux begrijpen: gebruik en toepassingen
Een persoon die een laptop gebruikt.

Grep is een compacte UNIX-tool die is ontworpen voor patroonzoeken. Oorspronkelijk geïntroduceerd in V6 UNIX, is het een hoofdbestanddeel geworden in verschillende UNIX-achtige besturingssystemen, waaronder Linux, macOS en BSD-varianten. In dit artikel verkennen we de fundamentele kenmerken van Grep en geven we praktische voorbeelden voor de toepassing ervan in alledaagse taken.

De basisprincipes van Grep begrijpen

De primaire functie van Grep is eenvoudig: het verwerkt invoer om overeenkomende tekstpatronen te identificeren en weer te geven. Dit hulpprogramma kan bijna elke bron van platte tekst onderzoeken, waardoor het direct door bestanden kan scannen of met uitvoer van andere opdrachten kan werken.

Om Grep te gebruiken, is een van de eenvoudigste opdrachten om te lezen van een tekstbestand. U kunt bijvoorbeeld de inhoud van weergeven sample.txtmet de volgende opdracht:

U kunt ook naar specifieke woorden zoeken in uw tekstbestanden:

Grep-matching van een woord in een terminal.

Bovendien kan Grep worden gecombineerd met UNIX-pipes om meerdere opdrachten te verenigen in één enkele bewerking:

Grep gebruiken om een ​​heel bestand af te drukken zonder argumenten.

Voor meer inzicht in hoe pagers werken in Linux, kunt u onze cheat sheet over GNU Less raadplegen.

Zoeken naar bestanden in een directory

Een praktische toepassing van Grep is het lokaliseren van bestanden in een directory. U kunt de uitvoer van de opdracht direct naar Grep doorsturen ls.

Met deze opdracht worden bijvoorbeeld alle JPEG-bestanden in uw map Downloads weergegeven door hun extensies te markeren:

Grep filtert bestandslijsten op bestandsextensie.

U kunt de uitvoer uitbreiden lsen ingewikkeldere patroonvergelijkingen uitvoeren. De volgende opdracht geeft bijvoorbeeld een lijst van alle bestanden in de huidige directory die kleiner zijn dan 1 MB:

De mogelijkheid van Grep om tekst in grotere formaten te matchen.

Hoofdlettergevoeligheid negeren

Standaard zijn de meeste UNIX-achtige tools gevoelig voor hoofdletteronderscheidingen. Dit betekent dat de strings “Hello,””hello,””hEllo,”en “helLo”worden geïnterpreteerd als afzonderlijke vermeldingen.

Grep is standaard hoofdlettergevoelig.

Dit kan tekstzoekopdrachten compliceren, vooral als er verschillende gevallen van een woord aanwezig zijn. Om dit te beperken, kunt u Grep gebruiken met de -ivlag gekoppeld aan de zoekterm:

De -i vlag in Grep schakelt hoofdlettergevoeligheid uit.

Recursief zoeken

Grep heeft de mogelijkheid om meerdere bestanden of hele mappen tegelijk te doorzoeken. Dit is vooral handig als u een project met verschillende bestanden onderzoekt en u specifieke tekst in een map wilt vinden. Gebruik bijvoorbeeld de volgende opdracht om de term “MakeTechEasier” te vinden in de map “sample”:

De recursieve functionaliteit van Grep bij het doorzoeken van meerdere bestanden.

Het is de moeite waard om op te merken dat het gebruik van de -rvlag Grep dwingt om alle bestanden in uw opgegeven directory te onderzoeken, die mogelijk niet-tekstbestanden bevatten. Om deze situatie te voorkomen, gebruikt u -Iook de vlag:

Bestanden met specifieke strings identificeren

Naast het weergeven waar een string in bestanden voorkomt, kan Grep een lijst genereren met bestanden die de tekst bevatten waarnaar u zoekt. Dit is handig als u wilt vaststellen of een bestand bepaalde inhoud heeft zonder elk gevonden exemplaar weer te geven.

Om dit te bereiken, gebruikt u Grep met de volgende vlaggen, -ren -l, samen met uw doelstring en de directory die u wilt doorzoeken:

Grep geeft de bestandspaden van overeenkomende inhoud weer.

Bovendien kunt u uw Grep-opdracht in een Bash-subshell inkapselen om meerdere zoekvoorwaarden af ​​te dwingen. De volgende opdracht retourneert bijvoorbeeld bestanden die zowel “Hello” als “MakeTechEasier” bevatten in de map “sample”:

Bash-subshells gebruiken met Grep voor het matchen van meerdere voorwaarden.

Onthullen van niet-overeenkomende resultaten

Naast standaard zoekopdrachten kan Grep ook resultaten opleveren die uw opgegeven criteria uitsluiten. Deze functionaliteit kan erg handig zijn als u fouten of onregelmatigheden in uw tekstinvoer wilt detecteren.

Om dit uit te voeren, gebruikt u de -vvlag in combinatie met uw voorkeursopties. De volgende opdracht scant bijvoorbeeld recursief alle bestanden in de map “/etc/nginx” en retourneert alle regels die niet de tekenreeks “nginx” bevatten:

Gebruik de invert-vlag om alles te matchen behalve een specifieke string.

Zoeken naar woorden en regels

Het kan ook nuttig zijn om Grep te instrueren om te zoeken naar hele woorden of hele regels in plaats van naar een string die past bij een specifiek patroon. Deze aanpak is vooral handig bij het targeten van een reeks tekens die veel voorkomt in verschillende woorden. Bijvoorbeeld, zoeken naar de term “it” kan talloze valse positieven opleveren omdat het in veel andere woorden voorkomt.

Om dit probleem op te lossen, voert u Grep uit met de -wvlag gevolgd door het gewenste woord:

Het uitvoeren van volledige woordvergelijking met Grep.

In plaats van alle instanties met het zoekpatroon te retourneren, geeft Grep alleen het woord zelf weer. Dit geldt ook voor hele regels bij gebruik van de -xvlag, waardoor het met name handig is voor het vinden van zinnen of exacte regels in configuratiebestanden.

Grep-matching van hele tekstregels.

Regelnummers opnemen in Grep-uitvoer

Regelnummers spelen een essentiële rol bij het debuggen van code en het beoordelen van documenten. Ze vereenvoudigen het proces van het bepalen van de locatie van een specifieke regel of functie, waardoor revisies aanzienlijk worden versneld.

Grep biedt functionaliteit om regelnummers in de uitvoer op te nemen. U kunt dit activeren door de opdracht uit te voeren met de -nvlag samen met uw zoekterm:

Grep geeft regelnummers weer voor overeenkomsten in een bestand.

In combinatie met UNIX-pipes kunt u de uitvoer van Grep verfijnen om alleen de regelnummers van uw zoekresultaten weer te geven. Deze aanpak is met name handig voor het verwerken van grote hoeveelheden tekst:

Gebruik van UNIX-pipes met Grep voor verfijnde uitvoerverwerking.

Uitgebreide Regex gebruiken met Grep

Grep gebruikt Basic Regular Expressions (BRE) als primaire metatekens voor het matchen van tekst. Hoewel dit functioneel is voor verschillende taken, kunnen gebruikers het beperkend vinden, vooral bij het onderzoeken van patroongroepen.

Om de mogelijkheden uit te breiden, nemen veel Grep-implementaties de -Evlag op om het parsen van Extended Regular Expressions (ERE) mogelijk te maken. De onderstaande opdracht vereist bijvoorbeeld de -Evlag:

Uitgebreide Regex met Grep gebruiken voor het matchen van patronen.

Daarnaast heeft Grep een speciale modus die regex-functionaliteiten volledig elimineert. Om deze te activeren, voert u de opdracht uit met de -Fvlag gevolgd door een eenvoudige string:

Exacte tekenreeksmatching zonder regex in Grep.

Omringende lijnen opnemen in Grep-uitvoer

De kracht van Grep ligt in het onthullen waar tekst in uw invoer of bestanden verschijnt. Het weergeven van de exacte locatie alleen is echter mogelijk niet voldoende bij het oplossen van problemen. Context rondom een ​​string, zoals die in crashlogs, kan vaak essentiële inzichten bieden.

Om extra context af te drukken, kunt u Grep uitvoeren met de -Cvlag gecombineerd met het aantal regels dat u voor en na uw zoekresultaat wilt weergeven. Om bijvoorbeeld vijf regels rond uw doelstring weer te geven, gebruikt u de volgende opdracht:

Grep geeft de context weer voor een overeenkomende string.

U kunt uw resultaten ook aanpassen door selectief alleen de voorgaande of volgende regels af te drukken met behulp van de -Ben -A-vlaggen. De onderstaande opdracht geeft bijvoorbeeld de tien regels weer die na uw zoekterm komen:

Grep drukt regels af die volgen op de overeenkomende tekenreeks.

Nu u bent uitgerust met de basiskennis van Grep en hoe u het kunt gebruiken voor algemene taken, bent u klaar om dieper in de opdrachtregel en het bredere UNIX-ecosysteem te duiken. Ontdek verder door te leren hoe u sed in Linux kunt gebruiken voor nog krachtigere tekstverwerking.

Afbeelding tegoed: Alejandro Escamilla via Unsplash . Alle aanpassingen en screenshots door Ramces Red.

Bron

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *