Kako izključiti besedo z grep

Kazalo:

Anonim

Orodje ukazne vrstice grep je zelo uporabno za iskanje po besedilnih podatkih za vrstice in izrezke, ki se ujemajo z definiranim nizom, znakom, besedo ali regularnim izrazom. Medtem ko grep večinoma uporabljamo za razvrščanje podatkov za ujemanje sintakse, kaj pa, če želite namesto tega z grepom izključiti besedo ali niz? Izključitev ujemanj vrstic z grep je enako uporabna kot iskanje in tiskanje ujemanj v grep, zato poglejmo, kako izključiti ujemanja nizov in besede z grep.

Očitno boste želeli imeti nekaj izkušenj z ukazno vrstico in izpostavljenost grepu, da se vam zdi to koristno. Če želite slediti, lahko odprete aplikacijo Terminal in jo preizkusite sami. Ker je grep agnostični pripomoček za operacijski sistem, lahko uporabite trik za izključitev v Mac OS, Linux, unix ali karkoli drugega, ki uporablja grep.

Kako izključiti eno besedo z grep

Najenostavnejši način za izključitev vrstic z nizom ali sintaksnim ujemanjem je uporaba grep in zastavice -v.

Na primer, recimo, da uporabljamo cat za tiskanje datoteke v ukazni vrstici, vendar želimo izključiti vse vrstice, ki vključujejo izraz “ThisWord”, potem bi sintaksa izgledala takole:

"

cat example.txt | grep -v ta beseda"

Izhod bo besedilna datoteka example.txt, vendar brez katere koli vrstice, ki vsebuje niz, ki se ujema z "ThisWord".

Grep lahko uporabite tudi neposredno na datotekah in izključite ujemanja vrstic na podlagi besed ali sintakse, na primer:

"

grep -v ThisWord>"

Uporabite tistega, ki je najboljši za vaš potek dela.

Kako izključiti več nizov ali besed z grep

Zdaj, ko veste, kako izključiti ujemanja za posamezno besedo, je naslednje očitno vprašanje o izključitvi več besed z grep. To je prav tako preprosto in obstaja nekaj različnih načinov, kako to doseči z uporabo zastavice -v in -e.

Najprej vzemimo zgornji primer uporabe cat v datoteki, napeljani na grep, in izključimo vse vrstice, ki se ujemajo z dvema besedama; »Word1« in »Word2«, to bi izgledalo takole:

"

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

Vse vrstice, ki vsebujejo »Word1« ali »Word2«, bodo izključene iz natisnjenih rezultatov.

Grep lahko uporabite tudi neposredno na datotekah, tako kot prej:

"

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

Drug pristop je ločevanje, kaj je treba izključiti z grep, z uporabo cevi za ločevanje vsakega ujemanja, na primer:

"

grep -Ev word1|word2 example.txt"

Če preizkusite katero koli od teh možnosti na vzorčni besedilni datoteki, boste ugotovili, da je rezultat enak ne glede na pristop, ki ga izberete, vsaka pa izključuje vrstice, ki vključujejo ciljne fraze, sintakso, besede ali ujemanje besedila.

Super, pokaži mi uporaben primer izključevanja podatkov z grep!

Za praktičen primer, ki se bo morda zdel naprednim uporabnikom Maca v pomoč, lahko uporabimo izključitev grep pri tiskanju in poizvedovanju po zgodovini ukazne vrstice, da poiščemo predhodno izvedene ukaze, da najdemo ujemanja s privzetimi vrednostmi, vendar izključimo nekatere izbrane privzete nize iz izhod.

V tem primeru bomo natisnili zgodovino ukazov za ujemanja privzetih nizov, vendar bomo izključili vse, kar se ujema, kar je povezano z iTunes, kot je definirano v “com.apple.itunes”:

"

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

Torej, če ste spremljali, bi to poročalo o vseh zgodovinskih izvedbah ukaza »defaults write«, vendar brez vsega, kar se je nanašalo na aplikacijo iTunes. Lepo, kaj?

Če imate kakšne posebej priročne načine uporabe izključevanja ujemanj z grep, jih delite z nami v spodnjih komentarjih! In če ste uživali v tem članku, bi skoraj zagotovo radi brskali po naših številnih člankih o ukazni vrstici, kjer se lahko naučite še veliko več!

Kako izključiti besedo z grep