Cum să excludeți un cuvânt cu grep

Cuprins:

Anonim

Instrumentul de linie de comandă grep este extrem de util pentru a căuta prin date text linii și fragmente care se potrivesc cu un șir, caracter, cuvânt sau expresie regulată definite. În timp ce cele mai multe utilizări ale grep sunt pentru sortarea datelor pentru potriviri de sintaxă, ce se întâmplă dacă doriți să excludeți un cuvânt sau șir cu grep? Excluderea potrivirilor de linii cu grep este la fel de utilă precum găsirea și tipărirea potrivirilor în grep, așa că haideți să discutăm cum să excludeți potrivirile șirurilor și cum să excludeți cuvintele cu grep.

Evident că veți dori să aveți ceva experiență în linia de comandă și expunere la grep pentru a găsi acest lucru util. Dacă doriți să urmați, puteți deschide aplicația Terminal și încercați singur. Deoarece grep este un utilitar agnostic al sistemului de operare, puteți folosi trucul de excludere în Mac OS, Linux, Unix sau orice altceva aveți care folosește grep.

Cum să excludeți un singur cuvânt cu grep

Cea mai simplă modalitate de a exclude linii cu o potrivire de șir sau de sintaxă este folosind grep și steag-ul -v.

De exemplu, să presupunem că folosim cat pentru a tipări un fișier la linia de comandă, dar dorim să excludem toate liniile care includ termenul „ThisWord”, atunci sintaxa ar arăta după cum urmează:

"

cat exemplu.txt | grep -v Acest Cuvânt"

Ieșirea va fi fișierul text example.txt, dar excluzând orice rând care conține o potrivire șir cu „ThisWord”.

De asemenea, puteți utiliza grep direct pe fișiere și puteți exclude potrivirile de linii bazate pe cuvinte sau sintaxă, astfel:

"

grep -v ThisWord>"

Folosiți cea care funcționează cel mai bine pentru fluxul dvs. de lucru.

Cum să excludeți mai multe șiruri sau cuvinte cu grep

Acum că știți cum să excludeți potrivirile pentru un singur cuvânt, următoarea întrebare evidentă este despre excluderea mai multor cuvinte cu grep. Acest lucru este la fel de simplu și există câteva moduri diferite de a realiza acest lucru folosind steag-ul -v, precum și steag-ul -e.

În primul rând, să luăm exemplul de mai sus de utilizare a pisicii pe un fișier piperat la grep și să excludem orice rând care se potrivește cu două cuvinte; „Cuvânt1” și „Cuvânt2”, ar arăta astfel:

"

cat exemplu.txt | grep -v -e Cuvânt1 -e Cuvânt2"

Orice rânduri care conțin „Cuvânt1” sau „Cuvânt2” vor fi excluse din rezultatele tipărite.

De asemenea, puteți utiliza grep direct pe fișiere, la fel ca și înainte:

"

grep -v -e Cuvânt1 -e Cuvânt2 exemplu.txt"

O altă abordare este să separați ce să excludeți cu grep folosind o conductă pentru a separa fiecare potrivire, astfel:

"

grep -Ev cuvânt1|cuvânt2 exemplu.txt"

Dacă testați oricare dintre aceste opțiuni pe un exemplu de fișier text, veți constata că rezultatul este identic, indiferent de abordarea pe care o luați, fiecare excluzând liniile care includ expresiile, sintaxa, cuvintele sau cuvintele vizate. potrivire text.

Bine, arată-mi un exemplu util de excludere a datelor cu grep!

Pentru un exemplu practic pe care utilizatorii avansați de Mac îl pot găsi util, putem folosi excluderea grep atunci când imprimăm și interogăm istoricul liniei de comandă pentru a găsi comenzi executate anterior pentru a găsi potriviri implicite, dar excluzând unele șiruri implicite selectate din ieșire.

În exemplul de aici vom tipări istoricul comenzilor pentru potrivirile implicite ale șirurilor, dar excludem orice potrivire care are legătură cu iTunes, așa cum este definit de „com.apple.itunes”:

"

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

Deci, dacă ați urmat, acest lucru ar raporta toate execuțiile istorice ale comenzii „scriere implicită”, dar excluzând orice se referă la aplicația iTunes. Frumos, nu?

Dacă aveți utilizări deosebit de utile pentru excluderea potrivirilor cu grep, împărtășiți-le cu noi în comentariile de mai jos! Și dacă ți-a plăcut acest articol, aproape sigur ți-ar plăcea să răsfoiești numeroasele noastre articole din linia de comandă aici, unde mai sunt multe de învățat!

Cum să excludeți un cuvânt cu grep