grep

Linux egrep -komento esimerkeillä

Linux egrep -komento esimerkeillä
Egrep-komento kuuluu grep-komennon perheeseen, jota käytetään kuvion hakemiseen Linuxissa. Jos olet käyttänyt grep-komentoa, egrep toimii samalla tavalla kuin grep -E (grep Extended regex '). Egrep skannaa tietyn tiedoston riviltä riville ja tulostaa rivit, jotka sisältävät hakumerkkijonon / säännöllisen lausekkeen. Tässä artikkelissa selitämme 15 hyödyllistä esimerkkiä egrep-komennoista, jotka auttavat aloittelijoita ja jopa asiantuntijoita tekemään mielekkäitä hakuja Linuxissa Olemme suorittaneet nämä esimerkit Debian 10 Buster -järjestelmässä, mutta ne voidaan helposti kopioida useimmissa Linux-distroissa.

Esimerkki 1: Tietyn merkkijonon etsiminen tiedostosta

Tämä on egrep-komennon yleisin käyttö. Sinun on määritettävä merkkijono, jonka haluat etsiä, ja tiedostonimi, josta haluat etsiä merkkijonon. Tulos näyttää sitten koko rivin, joka sisältää haetun merkkijonon.

Syntaksi:

$ egrep “search_string” tiedostonimi

Esimerkki:

$ egrep debian samplefile.txt

Etsin tässä esimerkissä sanaa "debian" määritetystä tekstitiedostosta. Näet, kuinka tulokset näyttävät koko rivin, joka sisältää sanan "debian":

Esimerkki 2: Tietyn merkkijonon etsiminen useista tiedostoista

Egrep-komennolla voit etsiä merkkijonoa useista samassa hakemistossa olevista tiedostoista. Sinun täytyy vain olla hieman tarkempi tarjoamalla "malli" haetuille tiedostoille. Tämä käy selvemmäksi esittelemämme esimerkin avulla.

Syntaksi:

$ egrep "search_string" tiedostonimen_malli

Esimerkki:

Täällä etsimme sanaa "debian" kaikista .txt-tiedostot määrittämällä tiedostonimi seuraavasti:

$ egrep “debian” *.txt

Komento on tulostanut kaikki rivit sekä tiedostonimet, jotka sisältävät sanan "debian" kaikista .txt-tiedostot nykyisessä hakemistossa.

Esimerkki 3: Merkkijonon rekursiivinen haku koko hakemistosta

Kun haluat etsiä merkkijonoa kaikista tiedostoista hakemistosta ja sen alihakemistoista, voit tehdä sen käyttämällä -r-lippua egrep-komennolla.

Syntaksi:

$ egrep -r "haku_merkkijono" *

Esimerkki:

Tässä esimerkissä etsin sanaa "näyte" koko nykyisen (Lataukset) -hakemiston tiedostoista.

$ egrep -r "näyte" *

Tulokset sisältävät kaikki rivit ja tiedostonimet, jotka sisältävät sanan "näyte" kaikista Lataukset-hakemiston tiedostoista ja sen alihakemistoista.

Esimerkki 4: Kirjainkoon erottelematon haku

-I-lipun avulla voit tulostaa tulokset hakumerkkijonon perusteella egrep-komennolla tarvitsematta huolehtia sen kirjainkoko.

Syntaksi:

$ egrep -i "search_string" tiedostonimi

Esimerkki:

Täällä etsin sanaa "debian" ja haluan, että tulokset näyttävät kaikki tiedoston rivit, jotka sisältävät sanan "debian" tai "Debian, riippumatta sen tapauksesta.

$ egrep -i "search_string" tiedostonimi

Voit nähdä, kuinka -i-lippu auttoi minua hakemaan kaikki hakumerkkijonon sisältävät rivit kirjainkokoisen "epäherkän" haun avulla.

Esimerkki 5: Merkkijonon etsiminen koko sanana eikä alimerkkijonona

Kun etsit merkkijonoa tavallisesti egrepin kautta, se tulostaa kaikki merkkijonon sisältävät sanat alimerkkijonoina. Esimerkiksi etsimällä merkkijono "päällä", kaikki sanat sisältävät merkinnän "päällä", kuten "päällä", "vain", "monitori", "klooni" jne. Jos haluat, että tuloksissa näytetään vain sana ”päällä” koko sanana eikä alimerkkijonona, voit käyttää -w-lippua egrep: n kanssa.

Syntaksi:

$ egrep -w "search_string" tiedostonimi

Esimerkki:

Täältä etsin merkkijonoa “päällä” näytetiedostossa:

$ egrep -i “päällä” näytetiedosto.txt

Yllä olevasta lähdöstä näet, että se sisältää myös sanan "vain". Tätä en kuitenkaan halua, koska etsin yksinomaan sanaa ”päällä”. Joten tätä komentoa käytän sen sijaan:

$ egrep -iw “päällä” näytetiedosto.txt

Nyt hakutuloksissani ovat vain rivit, jotka sisältävät sanan ”päällä” kokonaisuudessaan.

Esimerkki 6: Tulostetaan vain merkkijonon sisältävät tiedostonimet

Joskus haluamme vain hakea tiedostonimet, jotka sisältävät tietyn merkkijonon, sen sijaan että tulostamme sen sisältävät rivit. Tämä voidaan tehdä käyttämällä lippua -l (pienet L) ja egrep-komentoa.

Syntaksi:

$ egrep -l "search_string" tiedostonimen_malli

Esimerkki:

Täällä etsin merkkijonoa "näyte" kaikista .txt-tiedostot nykyisessä hakemistossa:

$ egrep -l näyte *.txt

Hakutulokset tulostavat vain määritetyn merkkijonon sisältävien tiedostojen nimet.

Esimerkki 7: Vain hakumerkkijonon tulostaminen tiedostosta

Sen sijaan, että tulostat koko hakumerkkijonon sisältävän rivin, voit tulostaa merkkijonon egrep-komennolla. Merkkijono tulostetaan niin monta kertaa kuin se näkyy määritetyssä tiedostossa.

Syntaksi:

$ egrep -o "search_string" tiedostonimi

Esimerkki:

Tässä esimerkissä etsin tiedostostani sanaa "Tämä".

$ egrep -o Tämä esimerkkitiedosto_.txt

Huomaa: Tämä komennon käyttö on kätevää, kun haet merkkijonoa säännöllisen lausekkeen perusteella. Selitämme säännölliset lausekkeet yksityiskohtaisesti yhdessä tulevista esimerkeistä.

Esimerkki 8: n rivin määrän näyttäminen hakumerkkijonon edessä, jälkeen tai sen ympärillä

Joskus on erittäin tärkeää tietää konteksti tiedostossa, jossa käytetään tiettyä merkkijonoa. Egrep on kätevä siinä mielessä, että sitä voidaan käyttää näyttämään jono, joka sisältää hakumerkkijonon, sekä tietyn määrän rivejä sen edessä, jälkeen ja sen ympärillä.

Tämä on esimerkkitekstitiedosto, jota käytän selittämään tulevia esimerkkejä:

N rivien lukumäärä hakumerkkijonon jälkeen:

A-lipun käyttö seuraavalla tavalla näyttää rivin, joka sisältää hakumerkkijonon ja N sen jälkeen rivien määrän:

$ egrep -A "search_string" tiedostonimi

Esimerkki:

$ egrep -A 2 "näyte" näytetiedosto.txt

N rivien lukumäärä ennen hakumerkkijonoa:

B-lipun käyttäminen seuraavalla tavalla näyttää rivin, joka sisältää hakumerkkijonon ja N edellisen rivien määrän:

$ egrep -B "search_string" tiedostonimi

Esimerkki:

$ egrep -B 2 "näyte" näytetiedosto.txt

N rivien lukumäärä ennen hakumerkkijonoa:

C-lipun käyttäminen seuraavalla tavalla näyttää rivin, joka sisältää hakumerkkijonon, ja N rivien määrän ennen ja jälkeen:

$ egrep -C "search_string" tiedostonimi

Esimerkki:

$ egrep -C 2 "näyte" näytetiedosto.txt

Esimerkki 9: Säännöllisen lausekkeen sovittaminen tiedostoihin

Egrep-komento tulee tehokkaammaksi, kun etsit säännöllisiä lausekkeita tiedostossa olevien kiinteiden hakumerkkijonojen sijaan.

Syntaksi:

$ egrep "RegularExpressions" -nimi

Kerro meille, kuinka voit käyttää säännöllisiä lausekkeita egrep-haullasi:

Toisto-operaattori Käyttää
? Edellinen kohta ennen ? on valinnainen ja sovitetaan enintään kerran

* Edeltävä nimike ennen * täsmää nollaan tai useammin
+ Edellinen kohde ennen +: ta sovitetaan yhden tai useamman kerran
n Edellinen kohde täsmää tarkalleen n kertaa.
n, Edeltävä kohde on sovitettu vähintään n kertaa
, m Edellinen kohde on sovitettu enintään m kertaa
n, m Edeltävä kohta on sovitettu vähintään n kertaa, mutta enintään m kertaa

Esimerkki:

Seuraavassa esimerkissä rivit, jotka sisältävät seuraavan lausekkeen, vastaavat:

alkaa "Gnome" ja päättyy "ohjelmat"

Esimerkki 10: Hakumerkkijonon korostaminen

Kun asetat GREP_OPTIONS-ympäristömuuttujan alla esitetyllä tavalla, saat tuotoksesi hakutuloksissa korostetulla hakusarjalla / kuviolla:

$ sudo export GREP_OPTIONS = '- color = auto' GREP_COLOR = '100; 8'

Voit sitten etsiä merkkijonoa millä tahansa tavalla, jonka olemme kuvanneet tämän artikkelin esimerkeissä.

Esimerkki 11: Käänteisen haun suorittaminen tiedostossa

Käänteishaulla tarkoitamme, että egrep-komento tulostaa kaiken tiedostosta, paitsi rivit, jotka sisältävät hakumerkkijonon. Selitämme käänteishakua egrepin avulla seuraavalla esimerkkitiedostolla. Olemme tulostaneet tiedoston sisällön cat-komennolla:

Syntaksi:

$ egrep -v "search_string" tiedostonimi

Esimerkki:

Mainitsemastamme esimerkkitiedostosta haluamme jättää pois rivin, joka sisältää sanan "kaksi", joten käytämme seuraavaa komentoa:

$ egrep -v "two" samplefile_.txt

Näet, kuinka tulos sisältää kaiken esimerkkitiedostosta, lukuun ottamatta toista riviä, joka sisälsi hakumerkkijonon "two".

Esimerkki 12: Käänteisen haun suorittaminen useiden ehtojen / hakumallin perusteella

-V-lipun avulla voit myös tehdä egrep-komennon suorittamaan käänteisen haun useamman kuin yhden hakumerkkijonon / kuvion perusteella.

Käytämme samaa esimerkkitiedostoa, jonka mainitsimme esimerkissä 11 tämän skenaarion selittämiseksi.

Syntaksi:

$ egrep -v -e "search_string" / "pattern" -e "search_string" / "pattern"
… Tiedoston nimi

Esimerkki:

Mainitsemastamme esimerkkitiedostosta haluamme jättää pois rivit, jotka sisältävät sanat "yksi" ja "kaksi", joten käytämme seuraavaa komentoa:

$ egrep -v -e "yksi" -e "kaksi" näytetiedosto_.txt

Olemme toimittaneet kaksi sanaa, jotka jätetään pois -e-lipun käytöstä, joten tulos näkyy seuraavasti:

Esimerkki 13: Hakumerkkijonoa vastaavien rivien määrän tulostaminen

Sen sijaan, että tulostat haetun merkkijonon tiedostosta tai sitä sisältävistä riveistä, voit laskea ja tulostaa merkkijonoa vastaavien rivien määrän egrep-komennolla. Tämä määrä voidaan noutaa käyttämällä -c-lippua egrep-komennolla.

Syntaksi:

$ egrep -c "search_string" tiedostonimi

Esimerkki:

Tässä esimerkissä käytämme -c-lippua laskemaan rivien määrä, jotka sisältävät sanan "Tämä" näytetiedostossamme:

$ egrep -c "Tämä" tiedostonimi

Voit myös käyttää käänteistä hakutoimintoa tässä laskeaksesi ja tulostaaksesi rivien määrän, jotka eivät sisällä hakumerkkijonoa: 

$ grep -v -c "search_string" tiedostonimi

Esimerkki 14: Näytetään rivinumero, johon merkkijono on sovitettu

-N-lipun avulla voit tehdä egrep-komennon tulostaaksesi sovitetun rivin yhdessä rivinumeron kanssa, joka sisältää hakumerkkijonon.

Syntaksi:

$ grep -n "search_string" tiedostonimi

Esimerkki:

$ grep -n "Tämä" näytetiedosto_.txt

Näet, kuinka rivinumerot näytetään hakutuloksissa.

Esimerkki 15: Näytetään tiedoston sijainti, jossa hakumerkkijono vastaa

Jos haluat tietää tiedoston sijainnin, jossa hakumerkkijono on olemassa, voit käyttää -b-lippua egrep-komennolla.

$ grep -o -b "search_string" tiedostonimi

Esimerkki:

$ grep -o -b "Tämä" näytetiedosto_.txt

Hakutulokset tulostavat tiedoston tavueron, jossa hakusana on.Tämä oli yksityiskohtainen egrep-komennon käyttö. Käyttämällä tässä artikkelissa selitettyjen lippujen yhdistelmää voit tehdä merkityksellisempiä ja monimutkaisempia hakuja tiedostoistasi.

Suosituimmat Oculus App Lab -pelit
Jos olet Oculus-kuulokemikrofonin omistaja, sinun täytyy olla tietoinen sivulatauksesta. Sivulataus on prosessi, jolla ei-kaupallista sisältöä asennet...
Top 10 Games to Play on Ubuntu
Windows platform has been one of the dominating platforms for gaming because of the huge percentage of games that are developing today to natively sup...
5 parasta arcade-peliä Linuxille
Nykyään tietokoneet ovat vakavia koneita, joita käytetään pelaamiseen. Jos et pääse uusiin korkeisiin pisteisiin, tiedät mitä tarkoitan. Tässä viestis...