Een woord uitsluiten met grep
Inhoudsopgave:
De grep-opdrachtregeltool is enorm handig voor het doorzoeken van tekstgegevens naar regels en fragmenten die overeenkomen met een gedefinieerde tekenreeks, teken, woord of reguliere expressie. Hoewel de meeste toepassingen van grep zijn voor het sorteren van gegevens voor syntaxisovereenkomsten, wat als u in plaats daarvan een woord of tekenreeks met grep wilt uitsluiten? Het uitsluiten van regelovereenkomsten met grep is net zo nuttig als het vinden en afdrukken van overeenkomsten in grep, dus laten we bespreken hoe u tekenreeksovereenkomsten kunt uitsluiten en woorden kunt uitsluiten met grep.
Het is duidelijk dat je enige ervaring met de opdrachtregel en bekendheid met grep wilt hebben om dit nuttig te vinden. Als je mee wilt doen, kun je de Terminal-applicatie openen en het zelf uitproberen. Omdat grep een OS-agnostisch hulpprogramma is, kun je de uitsluittruc gebruiken in Mac OS, Linux, Unix of wat je ook maar hebt dat grep gebruikt.
Een enkel woord uitsluiten met grep
De eenvoudigste manier om regels met een tekenreeks of syntaxisovereenkomst uit te sluiten, is door grep en de vlag -v te gebruiken.
Stel bijvoorbeeld dat we cat gebruiken om een bestand op de opdrachtregel af te drukken, maar we willen alle regels uitsluiten die de term "DitWoord" bevatten, dan ziet de syntaxis er als volgt uit:
cat voorbeeld.txt | grep -v DitWoord"
De uitvoer is het voorbeeld.txt-tekstbestand, maar exclusief elke regel die een tekenreeks bevat die overeenkomt met "DitWoord".
Je kunt grep ook rechtstreeks op bestanden gebruiken en regelovereenkomsten uitsluiten op basis van woorden of syntaxis, zoals:
"grep -v ThisWord>"
Gebruik wat het beste werkt voor uw specifieke workflow.
Hoe meerdere strings of woorden uit te sluiten met grep
Nu je weet hoe je overeenkomsten voor een enkel woord kunt uitsluiten, gaat de volgende voor de hand liggende vraag over het uitsluiten van meerdere woorden met grep. Dat is net zo eenvoudig, en er zijn een paar verschillende manieren om dit te bereiken met zowel de vlag -v als de vlag -e.
Laten we eerst het bovenstaande voorbeeld nemen van het gebruik van cat in een bestand dat is doorgesluisd naar grep, en alle regels uitsluiten die overeenkomen met twee woorden; "Woord1" en "Woord2", dit ziet er als volgt uit:
"cat voorbeeld.txt | grep -v -e Woord1 -e Woord2"
Alle regels die 'Woord1' of 'Woord2' bevatten, worden uitgesloten van de afgedrukte resultaten.
Je kunt grep ook rechtstreeks op bestanden gebruiken, net als voorheen:
"grep -v -e Word1 -e Word2 voorbeeld.txt"
Een andere benadering is om te scheiden wat moet worden uitgesloten met grep door een pipe te gebruiken om elke overeenkomst te scheiden, zoals:
grep -Ev woord1|woord2 voorbeeld.txt"
Als u een van deze opties uitprobeert op een voorbeeldtekstbestand, zult u zien dat de uitvoer identiek is, ongeacht de aanpak die u volgt, waarbij elke regel met uitzondering van de beoogde zinsdelen, syntaxis, woorden of tekstovereenkomst.
Geweldig, laat me een bruikbaar voorbeeld zien van het uitsluiten van gegevens met grep!
Voor een praktisch voorbeeld dat geavanceerde Mac-gebruikers nuttig kunnen vinden, kunnen we grep-uitsluiting gebruiken bij het afdrukken en opvragen van de opdrachtregelgeschiedenis om eerder uitgevoerde opdrachten te vinden om standaardovereenkomsten te vinden, maar sommige geselecteerde standaardreeksen uitsluiten van de uitvoer.
In het voorbeeld hier zullen we de opdrachtgeschiedenis afdrukken voor standaard tekenreeksovereenkomsten, maar alles uitsluiten dat te maken heeft met iTunes zoals gedefinieerd door "com.apple.itunes":
"geschiedenis |grep defaults schrijven |grep -v -e com.apple.itunes"
Dus als je het hebt gevolgd, zou dit alle historische uitvoeringen van de opdracht "defaults write" rapporteren, maar alles uitsluiten dat betrekking had op de iTunes-toepassing. Leuk hè?
Als je bijzonder handige toepassingen hebt voor het uitsluiten van overeenkomsten met grep, deel ze dan met ons in de reacties hieronder! En als je dit artikel leuk vond, zou je bijna zeker willen bladeren door onze vele opdrachtregelartikelen hier, waar nog veel meer te leren v alt!