Egrep-komento kuuluu grep-komennon perheeseen, jota käytetään kuvioiden etsimiseen Linuxissa. Jos olet käyttänyt grep-komentoa, egrep toimii samalla tavalla kuin grep -E (grep Extended regex’). Egrep skannaa tietyn tiedoston rivi riviltä ja tulostaa rivin tai rivit, jotka sisältävät hakujonon/säännöllisen lausekkeen. Tässä artikkelissa kerromme 15 hyödyllistä esimerkkiä egrep-komennoista, jotka auttavat aloittelijoita ja jopa asiantuntijoita suorittamaan mielekkäitä hakuja LinuxissaOlemme suorittaneet nämä esimerkit Debian 10 Buster -järjestelmässä, mutta ne voidaan helposti toistaa useimmilla Linux-distroilla.
- Esimerkki 1: Tietyn merkkijonon etsiminen tiedostosta
- Esimerkki 2: Tietyn merkkijonon etsiminen useista tiedostoista
- Esimerkki 3: Merkkijonon hakeminen rekursiivisesti koko hakemistosta
- Esimerkki 4: Isot ja pienet kirjaimet huomioimattoman haun suorittaminen
- Esimerkki 5: Merkkijonon etsiminen koko sanana eikä osajonona
- Esimerkki 6: Vain merkkijonon sisältävien tiedostonimien tulostaminen
- Esimerkki 7: Vain hakujonon tulostaminen tiedostosta
- Esimerkki 8: n rivimäärän näyttäminen ennen hakujonoa, sen jälkeen tai sen ympärillä
- Esimerkki 9: Säännöllisten lausekkeiden täsmäyttäminen tiedostoissa
- Esimerkki 10: Hakujonon korostaminen
- Esimerkki 11: Inverttihaun suorittaminen tiedostossa
- Esimerkki 12: Käänteisen haun suorittaminen useiden kriteerien/hakukuvion perusteella
- Esimerkki 13: Hakusanaa vastaavien rivien lukumäärän tulostaminen
- Esimerkki 14: Rivinumeron näyttäminen, jossa merkkijono osuu kohdalleen
- Esimerkki 15: Paikan näyttäminen tiedostossa, johon hakujono täsmää
Esimerkki 1: Tietyn merkkijonon etsiminen tiedostosta
Tämä on egrep-komennon yleisin käyttö. Tehdään niin, että määritetään merkkijono, jota halutaan etsiä, ja tiedoston nimi, josta halutaan etsiä kyseistä merkkijonoa. Tuloksena näytetään sitten koko rivi, joka sisältää haetun merkkijonon.
Syntaksi:
Esimerkki:
Tässä esimerkissä etsin sanaa ”debian” määritellystä tekstitiedostosta. Näet, kuinka tuloksissa näkyy koko rivi, joka sisältää sanan ”debian”:
Esimerkki 2: Tietyn merkkijonon etsiminen useista tiedostoista
Komennolla egrep voit etsiä merkkijonoa useista samassa hakemistossa sijaitsevista tiedostoista. Sinun täytyy vain olla hieman tarkempi antaessasi ”kuvion” etsittäville tiedostoille. Tämä selviää paremmin esimerkin avulla, jonka esittelemme.
Syntaksi:
Esimerkki:
Tässä etsimme sanaa ”debian” kaikista .txt-tiedostoista määrittämällä tiedostonimikuvio seuraavasti:
Komento on tulostanut kaikki rivit sekä tiedostonimet, jotka sisältävät sanan ”debian” kaikista nykyisessä hakemistossa olevista .txt-tiedostoista.
Esimerkki 3: Merkkijonon hakeminen rekursiivisesti koko hakemistosta
Kun haluat etsiä merkkijonoa kaikista hakemiston ja sen alihakemistojen tiedostoista, voit tehdä sen käyttämällä -r-lippua egrep-komennon kanssa.
Syntaksi:
Esimerkki:
Tässä esimerkissä etsin sanaa ”sample” koko nykyisen(Downloads) hakemiston tiedostoista.
Tulokset sisältävät kaikki rivit sekä tiedostonimet, jotka sisältävät sanan ”sample” kaikista Downloads-hakemiston ja sen alihakemistojen tiedostoista.
Esimerkki 4: Isot ja pienet kirjaimet huomioimattoman haun suorittaminen
Lipukkeen -i avulla voit käyttää egrep-komentoa tulostamaan hakujonoon perustuvat tulokset ilman, että sinun tarvitsee huolehtia sen isoista ja pienistä kirjaimista.
Syntaksi:
Esimerkki:
Tässä haen sanaa ”debian” ja haluan, että tuloksissa näytetään kaikki tiedoston rivit, jotka sisältävät sanan ”debian” tai ”Debian”, riippumatta sen isosta ja pienestä kirjaimesta.
Voit nähdä, miten -i-lippu auttoi minua hakemaan kaikki hakujonon sisältävät rivit hakusanalla, joka ei ota huomioon isoja ja pieniä kirjaimia.
Esimerkki 5: Merkkijonon etsiminen koko sanana eikä osajonona
Kun normaalisti haet merkkijonoa egrepin avulla, se tulostaa kaikki sanat, jotka sisältävät merkkijonon osajonona. Esimerkiksi merkkijonon ”on” etsiminen tulostaa kaikki sanat, jotka sisältävät merkkijonon ”on”, kuten ” on”, ”only”, ”monitor”, ”clone” jne. Jos haluat, että tulokset näyttävät vain sanan ”on” koko sanana eikä osajonona, voit käyttää -w-lippua egrepin kanssa.
Syntaksi:
Esimerkki:
Tässä haen merkkijonoa ”on” esimerkkitiedostosta:
Yllä olevasta tulosteesta näet, että se sisältää myös sanan ”vain”. En kuitenkaan halua tätä, sillä etsin yksinomaan sanaa ”on”. Käytän siis sen sijaan tätä komentoa:
Nyt hakutulokseni sisältävät vain ne rivit, jotka sisältävät sanan ”on” kokonaisena sanana.
Esimerkki 6: Vain merkkijonon sisältävien tiedostonimien tulostaminen
Joskus haluamme hakea vain ne tiedostonimet, jotka sisältävät tietyn merkkijonon, sen sijaan, että tulostaisimme sen sisältävät rivit. Tämä voidaan tehdä käyttämällä egrep-komennon -l (pieni L) -lippua.
Syntaksi:
Esimerkki:
Tässä haen merkkijonoa ”sample” kaikista nykyisen hakemiston .txt-tiedostoista:
Haun tuloksena tulostuu vain niiden tiedostojen nimet, jotka sisältävät määritetyn merkkijonon.
Esimerkki 7: Vain hakujonon tulostaminen tiedostosta
Hakujonon sisältävän koko rivin tulostamisen sijaan voit käyttää egrep-komentoa tulostamaan itse merkkijonon. Merkkijono tulostetaan sen verran, kuinka monta kertaa se esiintyy määritetyssä tiedostossa.
Syntaksi:
Esimerkki:
Tässä esimerkissä etsin tiedostostani sanaa ”Tämä”.
Huomautus: Tämä komennon käyttö on kätevää, kun etsit merkkijonoa säännöllisen lausekkeen mallin perusteella. Selitämme säännölliset lausekkeet yksityiskohtaisesti jossakin tulevista esimerkeistä.
Esimerkki 8: n rivimäärän näyttäminen ennen hakujonoa, sen jälkeen tai sen ympärillä
Joskus on hyvin tärkeää tietää, missä yhteydessä tiedostossa käytetään tiettyä merkkijonoa. egrep on siinä mielessä kätevä, että sen avulla voidaan näyttää hakujonon sisältävä rivi sekä tietty määrä rivejä sitä ennen, sen jälkeen ja sen ympärillä.
Tämä on esimerkkitekstitiedosto, jota käytän tulevien esimerkkien selittämiseen:
N rivimäärää hakujonon jälkeen:
Käyttämällä A-lippua seuraavalla tavalla saadaan näkyviin hakujonon sisältävä rivi ja N määrä rivejä sen jälkeen:
Esimerkki:
N määrä rivejä Ennen hakujonoa:
Käyttämällä B-lippua seuraavalla tavalla saadaan näkyviin hakujonon sisältävä rivi ja N määrä rivejä sitä ennen:
Esimerkki:
N rivimäärää Ennen hakujonoa:
Käyttämällä C-lippua seuraavalla tavalla saadaan näkyviin hakujonon sisältävä rivi ja N rivimäärää rivejä ennen ja jälkeen sen:
Esimerkki:
Esimerkki 9: Säännöllisten lausekkeiden täsmäyttäminen tiedostoissa
Egrep-komennosta tulee entistä tehokkaampi, kun etsit tiedostosta säännöllisten lausekkeiden sijaan kiinteitä hakujonoja.
Syntaksi:
Kerrotaan, miten voit käyttää säännöllisiä lausekkeita egrep-haussa:
toisto-operaattori | Käytä |
? | Edellinen kohde ennen ? on valinnainen ja sitä sovitetaan enintään kerran |
* | Edeltävää kohtaa ennen * sovitetaan nolla tai useampia kertoja |
+ | Edeltävä kohde ennen +:a sovitetaan yhteen tai useampaan kertaan |
{n} | Edeltävä kohde sovitetaan täsmälleen n kertaa. |
{n,} | Edellinen kohde täsmää vähintään n kertaa |
{,m} | Edellinen kohde täsmää enintään m kertaa |
{n,m} | Edeltävää kohdetta vastaa vähintään n kertaa mutta enintään m kertaa |
Esimerkki:
Seuraavassa esimerkissä sovitetaan yhteen rivit, jotka sisältävät seuraavan lausekkeen:
alkaen ”Gnome” ja päättyen ” ohjelmat”
Esimerkki 10: Hakujonon korostaminen
Kun asetat GREP_OPTIONS-ympäristömuuttujan alla esitetyllä tavalla, saat tulosteen, jossa hakujono/kuvio on korostettu tuloksissa:
Voit sitten hakea merkkijonoa millä tahansa tavalla, jonka olemme kuvanneet tämän artikkelin esimerkeissä.
Esimerkki 11: Inverttihaun suorittaminen tiedostossa
Inverttihaulla tarkoitamme sitä, että egrep-komento tulostaa tiedostosta kaiken muun paitsi ne rivit, jotka sisältävät hakujonon. Käytämme seuraavaa esimerkkitiedostoa selittääksemme inverttihaun egrepin avulla. Olemme tulostaneet tiedoston sisällön cat-komennolla:
Syntaksi:
Esimerkki:
Mainitsemastamme esimerkkitiedostosta haluamme jättää tulosteesta pois rivin, joka sisältää sanan ”kaksi”, joten käytämme seuraavaa komentoa:
Voit nähdä, kuinka tuloste sisältää kaiken esimerkkitiedostosta lukuun ottamatta toista riviä, joka sisälsi hakujonon ”two”.
Esimerkki 12: Käänteisen haun suorittaminen useiden kriteerien/hakukuvion perusteella
-v-lippulauseen avulla egrep-komennon voi myös saada suorittamaan käänteisen haun useampien hakujonojen/hakukuvion perusteella. filename
Esimerkki:
Mainitsemastamme esimerkkitiedostosta haluamme jättää tulosteesta pois rivin tai rivit, jotka sisältävät sanat ”one” ja ”two”, joten käytämme seuraavaa komentoa:
Olimme antaneet kaksi sanaa jätettäväksi pois -e-lippulauseen avulla, joten tuloste näyttää seuraavalta:
Esimerkki 13: Hakusanaa vastaavien rivien lukumäärän tulostaminen
Sen sijaan, että tulostaisit tiedostosta etsityn merkkijonon tai sen sisältämät rivit, voit egrep-komennolla laskea ja tulostaa merkkijonoa vastaavien rivien lukumäärän. Tämä luku voidaan hakea käyttämällä egrep-komennon -c-lippua.
Syntaksi:
Esimerkki:
Tässä esimerkissä käytämme -c-lippua laskeaksemme niiden rivien määrän, jotka sisältävät sanan ”Tämä” esimerkkitiedostossamme:
Voit käyttää tässä myös käänteishakuominaisuutta laskea ja tulostaa niiden rivien määrän, jotka eivät sisällä hakusanaa:
Esimerkki 14: Rivinumeron näyttäminen, jossa merkkijono osuu kohdalleen
Lipukkeella -n voit saada egrep-komennon tulostamaan osuneen rivin sekä rivinumeron, joka sisältää hakujonon.
Syntaksi:
Esimerkki:
Voit nähdä, miten rivinumerot näytetään hakutuloksia vastaan.
Esimerkki 15: Paikan näyttäminen tiedostossa, johon hakujono täsmää
Jos haluat tietää paikan tiedostossa, jossa hakujono esiintyy, voit käyttää -b-lippua egrep-komennon kanssa.
Esimerkki:
Haun tuloksena tulostuu tiedoston tavuoffset-tietue, jossa hakusana on olemassa. egrep-komennon yksityiskohtainen käyttö. Käyttämällä tässä artikkelissa selitettyjen lippujen yhdistelmää voit tehdä mielekkäämpiä ja monimutkaisempia hakuja tiedostoihisi.