Hvordan ekskludere et ord med grep
Innholdsfortegnelse:
Kommandolinjeverktøyet grep er veldig nyttig for å søke gjennom tekstdata etter linjer og utdrag som samsvarer med en definert streng, tegn, ord eller regulært uttrykk. Mens de fleste brukene av grep er for å sortere data for syntakstreff, hva om du vil ekskludere et ord eller en streng med grep i stedet? Å ekskludere linjetreff med grep er like nyttig som å finne og skrive ut samsvar i grep, så la oss dekke hvordan du ekskluderer strengtreff og ekskluderer ord med grep.
Det er klart du vil ha litt kommandolinjeerfaring og eksponering for grep for å finne dette nyttig. Hvis du vil følge med kan du åpne Terminal-applikasjonen og prøve den ut selv. Siden grep er et OS-agnostisk verktøy, kan du bruke ekskluderingstrikset i Mac OS, Linux, unix eller hva annet du har som bruker grep.
Hvordan ekskludere et enkelt ord med grep
Den enkleste måten å ekskludere linjer med en streng eller syntaksmatch på er å bruke grep og -v-flagget.
For eksempel, la oss si at vi bruker cat til å skrive ut en fil på kommandolinjen, men vi ønsker å ekskludere alle linjer som inkluderer begrepet "ThisWord", så vil syntaksen se ut som følger:
cat example.txt | grep -v ThisWord"
Utgangen vil være tekstfilen example.txt, men ekskluderer alle linjer som inneholder en streng som samsvarer med "ThisWord".
Du kan også bruke grep direkte på filer og ekskludere linjetreff basert på ord eller syntaks, slik:
"grep -v ThisWord>"
Bruk det som fungerer best for akkurat din arbeidsflyt.
Hvordan ekskludere flere strenger eller ord med grep
Nå som du vet hvordan du ekskluderer treff for et enkelt ord, handler 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 å bruke -v-flagget så vel som -e-flagget.
La oss først ta eksemplet ovenfor med bruk av cat på en fil som er overført til grep, og ekskludere alle linjer som samsvarer med to ord; "Word1" og "Word2", dette vil se slik ut:
"cat example.txt | grep -v -e Word1 -e Word2"
Alle linjer som inneholder "Word1" eller "Word2" vil bli ekskludert fra de utskrevne resultatene.
Du kan også bruke grep direkte på filer akkurat som før:
"grep -v -e Word1 -e Word2 example.txt"
En annen tilnærming er å skille det som skal ekskluderes med grep ved å bruke et rør for å skille hver kamp, slik:
grep -Ev ord1|ord2 eksempel.txt"
Hvis du tester ut noen av disse alternativene på en eksempeltekstfil, vil du finne at utdataene er identiske uavhengig av tilnærmingen du bruker, hver unntatt linjer som inkluderer de målrettede frasene, syntaksen, ordene eller tekstmatch.
Flott, vis meg et nyttig eksempel på ekskludering av data med grep!
For et praktisk eksempel som avanserte Mac-brukere kan finne nyttig, kan vi bruke grep-ekskludering når vi skriver ut og spør etter kommandolinjehistorikk for å finne tidligere utførte kommandoer for å finne samsvar med standardverdier, men ekskludere noen valgte standardstrenger fra produksjon.
I eksemplet her vil vi skrive ut kommandohistorikk for standardstrengtreff, men ekskluderer alt samsvar 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 med, vil dette rapportere tilbake alle historiske kjøringer av "defaults write"-kommandoen, men ekskludert alt som har med iTunes-applikasjonen å gjøre. Fint ikke sant?
Hvis du har noen spesielt nyttige bruksområder for å ekskludere treff med grep, del dem med oss i kommentarfeltet nedenfor! Og hvis du likte denne artikkelen, vil du nesten helt sikkert like å bla gjennom våre mange kommandolinjeartikler her hvor det er mye mer å lære!