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
Kuvittele, että sinulla on tekstitiedosto, jota kutsutaan kirjoiksi, jolla on seuraavat lastenkirjamerkinnät:
- Robin Hood
- Pieni Punahilkka
- Peter Pan
- Kultakutri ja kolme karhua
- Lumikki ja seitsemän kääpiötä
- Pinokkio
- Kissa hatussa
- Kolme pientä porsasta
- Gruffalo
- Jali ja suklaatehdas
Jos haluat löytää kaikki kirjat otsikossa "The", käytä seuraavaa syntaksia:
grep Kirjat
Seuraavat tulokset palautetaan:
- Kultakutri ja kolme karhua
- Lumikki ja seitsemän kääpiötä
- Kissa hatussa
- Kolme pientä porsasta
- Gruffalo
- Jali ja suklaatehdas
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
- linux.about.com
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- everydaylinuxuser.com
- google.co.uk
- google.au
- direct.gov.uk
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:
- everydaylinuxuser.com/about.html
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:
- Blackpool
- Liverpool
- Manchester City
- Leicester City
- Manchester United
- Newcastle United
- FC Manchester United
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:
- aberdeen skotlanti
- glasgow skotlanti
- liverpool england
- colwyn bay
- Lontoo, Englanti
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:
- aberdeen skotlanti
- inverly skotlanti
- liverpool england
- colwyn bay wales
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:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
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