Esimerkki Linuxin grep-komennon käytöstä

esittely

Linux grep -komentoa käytetään tuloksen suodattamismenetelmänä.

GREP tarkoittaa globaalia säännöllistä lausekirjoitinta ja siksi sen käyttämiseksi tehokkaasti sinulla on oltava jonkin verran tietoa säännöllisistä lausekkeista.

Tässä artikkelissa aion näyttää joitain esimerkkejä, jotka auttavat sinua ymmärtämään grep-komentoa.

01/09

Miten etsiä merkkijono tiedostoon GREP

Linux Grep Command.

Kuvittele, että sinulla on tekstitiedosto, jota kutsutaan kirjoiksi, jolla on seuraavat lastenkirjamerkinnät:

Jos haluat löytää kaikki kirjat otsikossa "The", käytä seuraavaa syntaksia:

grep Kirjat

Seuraavat tulokset palautetaan:

Kussakin tapauksessa sana "The" korostuu.

Huomaa, että haku on herkkä, joten jos jollakin nimikkeellä oli "The" -merkki "The": n sijasta, sitä ei olisi palautettu.

Jos haluat jättää asian huomiotta, voit lisätä seuraavan vaihtoehdon:

kirjoita kirjat --ignore-case

Voit käyttää myös -i-kytkintä seuraavasti:

grep -i kirjat

02/09

Etsi merkkijono tiedostoon, jossa käytetään jättikortteja

Grep-komento on erittäin voimakas. Voit käyttää suodattimien tuloksia suodatustekniikoiden joukossa.

Tässä esimerkissä näytän sinulle, miten etsiä merkkijono tiedostoon, jossa käytetään yleismerkkejä .

Kuvittele, että sinulla on tiedosto nimeltä paikkoja, joilla on seuraavat skotlantilaiset paikkamerkinnät:

Aberdeen

Aberystwyth

Aberlour

Inverurie

Inverness

Newburgh

uudet hirvieläimet

uusi galloway

Glasgow

edinburgh

Jos haluat etsiä kaikki paikat, joissa nimi on inver, käytä seuraavaa syntaksia:

grep inver * paikkoja

Tähtimerkki (*) -merkki on 0 tai useampi. Siksi jos sinulla on paikka nimeltä inver tai paikka nimeltä inverness sitten molemmat palautetaan.

Toinen vaihtoehto, jota voit käyttää, on ajanjakso (.). Voit käyttää tätä vastaamaan yhtä kirjainta.

grep inver.r paikkoja

Yllä oleva komento löytäisi paikkoja, joita kutsutaan inveruriksi ja invertereiksi, mutta eivät löydä invereerie, koska kahden r: n välillä voi olla vain yksi jake, kuten yksittäinen kausi.

Kausivaramerkki on hyödyllinen, mutta se voi aiheuttaa ongelmia, jos sinulla on yksi osana etsimääsi tekstiä.

Katso esimerkiksi tätä verkkotunnusten luetteloa

Löydät kaikki around.com-sivustot, jotka voit etsiä vain seuraavan syntaksin avulla:

grep * about * verkkotunnukset

Yllä oleva komento laskisi, jos luettelossa oli seuraava nimi:

Voit siis kokeilla seuraavanlaista syntaksia:

grep * about.com domainnames

Tämä toimisi kunnolla, ellei ole olemassa verkkotunnusta, jolla on seuraava nimi:

aboutycom.com

Jos haluat todella etsiä termiä about.com, sinun on vältettävä piste seuraavasti:

grep * about \ .com domainnames

Lopullinen jakaja, joka näyttää sinulle on kysymysmerkki, joka tarkoittaa nollaa tai yhtä hahmoa.

Esimerkiksi:

grep? ber paikkamerkit

Yllä oleva komento palaisi aberdeen, aberystwyth tai jopa berwick.

03/09

Etsi jouset alussa ja loppupisteessä Käytä grep

Karaatin (^) ja dollari ($) -merkin avulla voit etsiä kuviot rivien alussa ja lopussa.

Kuvittele, että sinulla on jalkapallo-tiedosto, jossa on seuraavat tiiminimet:

Jos haluat löytää kaikki Manchesterin kanssa alkaneet joukkueet, käytä seuraavaa syntaksia:

Grep ^ Manchester joukkueet

Yllä oleva komento palaisi Manchester Cityyn ja Manchester Unitediin, mutta ei FC United Manchester.

Vaihtoehtoisesti voit löytää kaikki joukkueet, jotka päätyvät Isoon seuraaviin syntaksiin:

grep United $ joukkueet

Yllä mainittu komento palaisi Manchester Unitediin ja Newcastle Unitediin, mutta ei FC United Of Manchester.

04/09

Laskeminen Ottelujen määrä käyttäen grep

Jos et halua palauttaa todellisia viivoja, jotka vastaavat kuvioita käyttämällä grep-tiedostoa, mutta haluat vain tietää, kuinka monta on olemassa, voit käyttää seuraavaa syntaksia:

grep -c kuvion syöttötiedosto

Jos kuvio sovitettiin kahdesti, numero 2 palautetaan.

05/09

Kaikkien ehtojen löytäminen, jotka eivät sovi grepilla

Kuvittele, että sinulla on luettelo paikkamerkinnöistä seuraavien maiden kanssa:

Olet ehkä huomannut, että Colwynin lahdella ei ole siihen liittyvää maata.

Voit etsiä paikkoja missä maassa voit käyttää seuraavaa syntaksia:

grep maa $ paikkoja

Tulosten palautukset olisivat kaikki paikat paitsi Colwyn Bay.

Tämä ilmeisesti toimii vain paikoissa, jotka päätyvät maahan (tuskin tieteellinen).

Voit kääntää valinnan käyttämällä seuraavaa syntaksia:

grep -v maa $ paikkoja

Tämä löytäisi kaikki paikat, jotka eivät päätyneet maalle.

06/09

Miten löytää tyhjät rivit tiedostossa Käyttämällä grep

Kuvittele, että sinulla on syöttötiedosto, jota kolmannen osapuolen sovellus käyttää, joka lakkaa lukemasta tiedostoa, kun se löytää tyhjän rivin seuraavasti:

Kun sovellus saapuu linjalle liverpoolin jälkeen, se lakkaa lukemasta merkitystä, kun colwyn-lahti jää kokonaan pois.

Voit hakea tyhjiä viivoja käyttäen seuraavia syntaksia:

grep ^ $ paikkoja

Valitettavasti tämä ei ole erityisen hyödyllinen, koska se vain palauttaa tyhjät rivit.

Voit tietenkin saada laskemalla tyhjien rivien lukumäärän tarkistaaksesi, onko tiedosto voimassa seuraavalla tavalla:

grep -c ^ $ paikkoja

Olisi kuitenkin hyödyllisempää tietää rivinumerot, joilla on tyhjä rivi, jotta voit korvata ne. Voit tehdä sen seuraavalla komennolla:

grep -n ^ $ paikkoja

07/09

Kuinka etsiä suurten tai pienempien merkkien rivejä käyttäen grep

Käyttämällä grep-toimintoa voit määrittää, mitä tiedoston viivoilla on isoja kirjaimia seuraavan syntaksin avulla:

grep '[AZ]' tiedostonimi

Kaaret [] antavat sinun määrittää merkkijoukon. Yllä olevassa esimerkissä se vastaa mitä tahansa merkkiä, joka on A: n ja Z: n välillä.

Siksi pieniksi kirjaimiksi voidaan käyttää seuraavaa syntaksia:

grep '[az]' tiedostonimi

Jos haluat vastata vain kirjaimia eikä numeerisia tai muita symboleita, voit käyttää seuraavaa syntaksia:

grep '[a-zA-Z]' tiedostonimi

Voit tehdä samoja numeroita seuraavasti:

grep '[0-9]' tiedostonimi

08/09

Etsitään toistuvia kuvioita käyttäen grep

Voit hakea toistuvaa kuvioita käyttämällä kihara-elementtejä {}.

Kuvittele, että sinulla on tiedosto puhelinnumeroilla seuraavasti:

Tiedät, että numeron ensimmäinen osa on kolme numeroa ja haluat löytää ne viivat, jotka eivät vastaa tätä mallia.

Edellisestä esimerkistä tiedät, että [0-9] palauttaa kaikki tiedoston numerot.

Tässä tapauksessa haluamme linjat, jotka alkavat kolmella numerolla ja jota seuraa yhdysviiva (-). Voit tehdä sen seuraavalla syntaksilla:

grep "^ [0-9] [0-9] [0-9] -" numerot

Kuten aiemmista esimerkeistä tiedetään, karaatti (^) tarkoittaa, että viivan on alettava seuraavalla kuvioinnilla.

[0-9] etsii mitä tahansa numeroa välillä 0 ja 9. Koska tämä sisältyy kolme kertaa, se vastaa 3 numeroa. Lopuksi on yhdysviiva, joka merkitsee, että yhdysviitteen täytyy onnistua kolmella numerolla.

Haarukoiden avulla voit tehdä haun pienemmäksi seuraavasti:

grep "^ [0-9] \ {3 \} -" numerot

Slash lähtee {kiinnike niin, että se toimii osana säännöllistä lauseketta, mutta pohjimmiltaan tämä tarkoittaa [0-9] {3}, mikä tarkoittaa mitä tahansa numeroa välillä 0 - 9 kolme kertaa.

Kiertokappaleita voidaan käyttää myös seuraavasti:

{5,10}

{5,}

{5,10} tarkoittaa, että etsitettävä merkki on toistettava vähintään 5 kertaa, mutta enintään 10, kun taas {5,} tarkoittaa, että merkki on toistettava vähintään viisi kertaa, mutta se voi olla enemmän kuin se.

09/09

Muiden komennoiden tulosteen käyttäminen Grep-ohjelman käyttäminen

Tähän mennessä olemme tarkastelleet kuvion sovittamista yksittäisissä tiedostoissa, mutta grep voi käyttää muiden komentojen lähtöä mallin sovittamiseksi.

Hyvä esimerkki tästä on ps-komennolla, jossa luetellaan aktiiviset prosessit.

Esimerkiksi suorita seuraava komento:

ps -ef

Kaikki käynnissä olevat prosessit näkyvät järjestelmässäsi.

Voit käyttää grep-ohjelmaa etsimään tietyn käynnissä olevan prosessin seuraavasti:

ps -ef | grep firefox

Yhteenveto

Grep-komento on perustavanlaatuinen Linux-komento, ja se on sellainen, joka kannattaa oppimista, koska se tekee elämästäsi helpompaa etsittäessä tiedostoja ja prosesseja päätelaitteen käytön aikana.