Sådan udelades et ord med grep

Grep-kommandolinjeværktøjet er vildt nyttigt til at søge gennem tekstdata for linjer og uddrag, der matcher en defineret streng, et tegn, et ord eller et almindeligt udtryk. Mens de fleste anvendelser af grep er til sortering af data til syntakskampe, hvad hvis du vil udelukke et ord eller en streng med grep i stedet for? Eksklusive linjekampe med grep er lige så nyttigt som at finde og udskrive kampe i grep, så lad os dække, hvordan man udelukker strengekampe og udelukker ord med grep.


Selvfølgelig vil du have nogle kommandolinjeroplevelse og eksponering for grep for at finde dette nyttigt. Hvis du vil følge med, kan du åbne Terminal applikationen og afprøve dig selv. Da grep er et OS agnostisk værktøj, kan du bruge ekskluderet trick i Mac OS, Linux, Unix, eller hvad du ellers har, der bruger grep.

Sådan udelades et enkelt ord med grep

Den mest enkle måde at ekskludere linjer med en streng eller syntax kamp er ved at bruge grep og -v flag.

Lad os f.eks. Sige, at vi bruger kat til at udskrive en fil på kommandolinjen, men vi vil ekskludere alle linjer, der indeholder udtrykket "ThisWord", så syntaksen ser ud som følger:

cat example.txt | grep -v "ThisWord"

Outputen er tekstfilen example.txt, men udelukker enhver linje, der indeholder en strengkamp med "ThisWord".

Du kan også bruge grep direkte på filer og udelukke linjekampe baseret på ord eller syntaks, som sådan:

grep -v "ThisWord" example.txt

Brug det, der passer bedst til din arbejdsgang.

Sådan udelades flere snor eller ord med grep

Nu hvor du ved, hvordan du udelukker kampe for et enkelt ord, handler det næste indlysende spørgsmål om at udelukke flere ord med grep. Det er lige så enkelt, og der er et par forskellige måder at opnå dette ved hjælp af -v-flag samt -e-flag.

Lad os først tage ovenstående eksempel på at bruge kat på en fil, der er pipet til grep, og udelukker alle linjer, der matcher to ord; "Word1" og "Word2", vil det se ud som følger:

cat example.txt | grep -v -e "Word1" -e "Word2"

Enhver linje, der indeholder "Word1" eller "Word2" vil blive udelukket fra de udskrevne resultater.

Du kan også bruge grep direkte på filer lige som før:

grep -v -e "Word1" -e "Word2" example.txt

En anden tilgang er at adskille hvad man skal udelukke med grep ved at bruge et rør til at adskille hver kamp, ​​som sådan:

grep -Ev "word1|word2" example.txt

Hvis du tester nogle af disse valgmuligheder på en eksempeltekstfil, finder du udgangen er identisk, uanset hvilken tilgang du tager, hver undtagen linjer, der indeholder de målrettede sætninger, syntaks, ord eller tekstkamp.

Great, vis mig et nyttigt eksempel på at udelukke data med grep!

For et praktisk eksempel, at avancerede Mac-brugere kan finde nyttige, kan vi bruge grep-udelukkelse, når du udskriver og spørger kommandolinjeshistorik for at finde tidligere udførte kommandoer for at finde standardresultater, men eksklusive nogle valgte standardstreng fra output.

I eksemplet her udskriver vi kommandobeskrivelse for standardstrengsmatcher, men udelukker alt, hvad der passer til iTunes som defineret af "com.apple.itunes":

history |grep "defaults write" |grep -v -e "com.apple.itunes"

Så hvis du har fulgt sammen, vil dette rapportere tilbage alle historiske henrettelser af "standard default" -kommandoen, men udelukkende alt hvad der vedrørte iTunes-applikationen. Godt hej?

Hvis du har nogle særdeles nyttige anvendelser af eksklusive matcher med grep, kan du dele dem med os i kommentarerne nedenfor! Og hvis du nyder denne artikel, vil du næsten helt sikkert lide at surfe gennem vores mange kommandolinjeprodukter her, hvor der er meget mere at lære!