Hvordan utelukke et ord med grep

Grep kommandolinjeverktøyet er veldig nyttig for å søke gjennom tekstdata for linjer og utdrag som samsvarer med en definert streng, et tegn, et ord eller et vanlig uttrykk. Mens de fleste bruksområder av grep er for å sortere data for syntakseksperter, hva om du vil ekskludere et ord eller en streng med grep i stedet? Eksklusive linjekamper med grep er like nyttig som å finne og skrive ut kamper i grep, så la oss dekke hvordan du ekskluderer strengekamper og ekskluderer ord med grep.


Åpenbart vil du ha noen kommandolinje erfaring og eksponering for grep for å finne dette nyttig. Hvis du vil følge med, kan du åpne Terminal-applikasjonen og prøve den selv. Siden grep er et OS-agnostisk verktøy, kan du bruke utelukkelsestrikket i Mac OS, Linux, Unix, eller hva annet du har som bruker grep.

Hvordan utelukke et enkelt ord med grep

Den enkleste måten å ekskludere linjer med en streng eller syntaks-kamp er ved å bruke grep og -v-flagget.

For eksempel, la oss si at vi bruker katten til å skrive ut en fil på kommandolinjen, men vi vil ekskludere alle linjer som inkluderer begrepet "ThisWord", da vil syntaksen se slik ut:

cat example.txt | grep -v "ThisWord"

Utdataene vil være tekstfilen example.txt, men unntatt en linje som inneholder en strengkamp med "ThisWord".

Du kan også bruke grep direkte på filer og ekskludere linjekamper basert på ord eller syntaks, slik som:

grep -v "ThisWord" example.txt

Bruk det som passer best for din arbeidsflyt.

Hvordan ekskludere flere snorer eller ord med grep

Nå som du vet hvordan du ekskluderer kamper for et enkelt ord, er det neste åpenbare spørsmålet om å ekskludere flere ord med grep. Det er like enkelt, og det er noen forskjellige måter å oppnå dette ved hjelp av -v-flagget samt -e-flagget.

Først kan vi ta eksemplet ovenfor om å bruke katt på en fil som er pipet til grep, og ekskluder eventuelle linjer som passer to ord; "Word1" og "Word2", vil dette se ut som følgende:

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

Eventuelle linjer som inneholder "Word1" eller "Word2" vil bli ekskludert fra de trykte resultatene.

Du kan også bruke grep direkte på filer akkurat som før også:

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

En annen tilnærming er å skille ut hva som skal utelukkes med grep ved å bruke et rør for å skille hver kamp, ​​slik som:

grep -Ev "word1|word2" example.txt

Hvis du teste noen av disse alternativene på en eksempeltekstfil, vil du finne at utdataene er identiske uavhengig av hvilken tilnærming du tar, hver med unntak av linjer som inneholder målrettede setninger, syntaks, ord eller tekstkamp.

Flott, vis meg et nyttig eksempel på å ekskludere data med grep!

For et praktisk eksempel som avanserte Mac-brukere kan finne hjelpsomme, kan vi bruke grep-ekskludering når du skriver ut og spørrer kommandolinjehistorikk for å finne tidligere utførte kommandoer for å finne standardverdier, men unntatt noen valgte standardstrenger fra utgangen.

I eksemplet her skal vi skrive ut kommandog History for standardstrengsmatcher, men ekskluder alt som har å gjøre med iTunes som definert av "com.apple.itunes":

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

Så hvis du har fulgt sammen, vil dette rapportere tilbake alle historiske henrettelser av "standard-skrive" -kommandoen, men unntatt alt som gjaldt iTunes-applikasjonen. Hyggelig hei?

Hvis du har noen spesielt nyttige bruksområder for å ekskludere matcher med grep, vennligst del dem med oss ​​i kommentarene nedenfor! Og hvis du likte denne artikkelen, vil du nesten sikkert like å bla gjennom våre mange kommandolinjeprodukter her hvor det er mye mer å lære!