Tässä artikkelissa näytämme sinulle suoritettavan merkkijonohaku Grepin avulla säännöllisen lausekkeen avulla antamalla sinulle 10 käytännön esimerkkiä sen toteutuksista. Monilla tässä artikkelissa käsitellyillä esimerkeillä on käytännön vaikutuksia, joten voit käyttää niitä päivittäisessä Linux-ohjelmoinnissasi. Seuraavat näytteet kuvaavat joitain regexp-esimerkkejä yleisesti haetuista malleista.
Esimerkki 1: Etsi yksi rahtaaja tekstitiedostosta
Jos haluat tulostaa tiedoston "kirja" rivejä, jotka sisältävät $ -merkin, kirjoita:
$ grep '\ $' kirjaEsimerkki 2: Etsi yksi merkkijono tekstitiedostosta
Rivien tuottamiseksi tiedostosta 'kirja', joka sisältää merkkijonon '$ 14.99 ', tyyppi:
$ grep '\ $ 14 \.99-kirjaEsimerkki 3: Etsi yksi yksittäinen vuokraaja tekstitiedostosta
Jos haluat tulostaa riviä tiedostossa "kirja", joka sisältää \ "-merkin, kirjoita:
$ grep '\\' kirjaEsim. 4: Tietyn tekstin alkuiset viivat
Käytä 'ˆ' -merkkiä regpeksissä merkitsemään rivin alku.
Jos haluat lähettää kaikki rivit hakemistossa '/ usr / dict / words', jotka alkavat sanalla 'pro', kirjoita:
$ grep 'ˆpro' / usr / dict / wordsJos haluat tulostaa kaikki tiedoston "rivit" rivit, jotka alkavat tekstillä "alussa", kirjoita tapaus riippumatta:
$ grep -i 'alussa' -kirjaMERKINTÄ: Nämä regexksit lainattiin merkillä; tämä johtuu siitä, että jotkut kuoret käsittelevät muuten ˆ-merkkiä erityisenä "metakuvana"
Sana- ja lausehakujen lisäksi voit etsiä monimutkaisia tekstimalleja, joita kutsutaan säännöllisiksi lausekkeiksi, grepillä. Säännöllinen lauseke tai “regexp” on erikoismerkkien merkkijono, joka määrittää a aseta sopivia malleja.
Teknisesti sanan tai lauseen mallit ovat säännöllisiä lausekkeita - vain hyvin yksinkertaisia. Säännöllisessä lausekkeessa useimmat merkit, mukaan lukien kirjaimet ja numerot, edustavat itseään. Esimerkiksi regexp-kuvio 1 vastaa merkkijonoa '1' ja kuviota poika vastaa merkkijonoa "poika".
On olemassa useita varattuja merkkejä, joita kutsutaan metahahmoiksi, jotka eivät edusta itseään säännöllisessä lausekkeessa, mutta niillä on erityinen merkitys, jota käytetään monimutkaisten kuvioiden rakentamiseen. Nämä metahahmot ovat seuraavat: ., *, [, ], ˆ, $ ja \. On hyvä huomata, että tällaiset metamerkit ovat yleisiä lähes kaikissa tavallisissa ja erityisissä Linux-jakeluissa. Tässä on hyvä artikkeli, joka kattaa metahahmojen erityiset merkitykset ja antaa esimerkkejä niiden käytöstä.
Esim. 5: Rivit, jotka päättyvät tiettyyn tekstiin
Käytä '$' lainatun tekstin viimeisenä merkkinä vastaamaan kyseistä tekstiä vain rivin lopussa. Jos haluat tulostaa rivejä huutomerkillä päättyviin tiedostoihin, kirjoita:
$ grep '!$ meneeEsim. 6: Tietyn pituiset viivat
Käytä tietyn pituisia viivoja vastaamaan.'characters: n ja $: n väliset merkit - esimerkiksi, jotta kaikki merkit (tai sarakkeet) leveät rivit sopivat yhteen, käytä hakulausekkeena tavallista sanaa' ˆ… $ '.
Jos haluat antaa kaikki rivit hakemistossa / usr / dict / words, jotka ovat täsmälleen kolmen merkin pituisia, kirjoita:
$ grep 'ˆ… $' / usr / dict / wordsPidemmillä viivoilla on hyödyllisempää käyttää erilaista rakennetta: 'ˆ.\ numero \ $ ', missä numero on vastaavien rivien määrä. Määritä numeroalue käyttämällä ','.
Jos haluat antaa kaikki rivit hakemistossa / usr / dict / words, jotka ovat täsmälleen kaksitoista merkkiä leveät, kirjoita:
$ grep 'ˆ.\ 12 \ $ '/ usr / dict / wordsJos haluat tulostaa kaikki rivit hakemistossa / usr / dict / words, jotka ovat vähintään kaksikymmentäkaksi merkkiä leveitä, kirjoita:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / wordsEsim. 7: Vastaavat viivat, jotka sisältävät joitain regexps-sanoja
Määritä regexps-lukuja sisältävien rivien vastaamiseksi määritä kukin regexps hakeaksesi vuorotteluoperaattoreiden välillä ('\ |' '). Rivit, jotka sisältävät minkä tahansa annetusta regexpsistä, tulostetaan.
Jos haluat tulostaa kaikki playboy-rivit, jotka sisältävät joko kirjoja tai kakkuja, kirjoita:
$ grep 'kirja \ | kakku' playboyEsim. 8: Vastaavat viivat, jotka sisältävät kaikki jotkut regexps
Vastaavien rivien tuottamiseksi kaikki useiden regexppien joukosta, käytä grep-tiedostoa riveille, jotka sisältävät ensimmäisen sovitettavan regexp: n, ja välitä lähtö grepiin toisen regexp-argumentin kanssa. Jatka putkien lisäämistä kaikkien etsittävien hakulausekkeiden hakemiseen.
Jos haluat lähettää kaikki rivit soittolistassa, joka sisältää sekä kuviot '' ranta '' että '' taivas '', kirjoita tapaus:
$ grep -i 'rannalla' soittolista | grep -i taivasEx 9: Vastaavia viivoja, jotka sisältävät vain tiettyjä merkkejä
Käytä vain tiettyjä merkkejä sisältäviä rivejä sovittamalla regexp 'ˆ [merkit] * $', missä merkit vastaavat. Jos haluat antaa "/ usr / dict / words" -rivejä, jotka sisältävät vain vokaaleja, kirjoita:
$ grep -i 'ˆ [aeiou] * $' / usr / dict / sanat'-I' -vaihtoehto vastaa merkkejä kirjaimista riippumatta; joten tässä esimerkissä kaikki vokaalimerkit sovitetaan tapauskohtaisesti.
Esim. 10: Lausekkeiden etsiminen välistä riippumatta
Yksi tapa etsiä ilmausta, joka saattaa esiintyä sanojen välissä tai rivin tai sivunvaihdon ylimääräisillä välilyönneillä, on poistaa kaikki rivinvaihdot ja ylimääräiset välilyönnit syötteestä ja napata sitten. Tee tämä syöttämällä tulo tr: ään argumentilla "\ r \ n: \> \ | -" argumenttiin '-d' (poistamalla kaikki rivinvaihdot syötteestä); putki se FMT-suodattimeen '-u' -vaihtoehdolla (tekstin tulostaminen tasaisella välillä); ja putki, että tartutaan etsittävän kuvion kanssa.
Jos haluat hakea merkkijonoa rivinvaihdoista samanaikaisesti tiedostossa 'docs', kirjoita:
$ kissaasiakirjat | tr -d '\ r \ n: \> \ |-"| fmt -u | grep 'samaan aikaan kuin'
Yhteenveto
Tässä artikkelissa tarkasteltiin 10 käytännön esimerkkiä Grep Linux -komennon käyttämisestä merkkijonojen etsimiseen ja löytämiseen tekstitiedostosta. Matkan varrella opimme käyttämään säännöllisiä lausekkeita Grepin kanssa monimutkaisten hakujen tekemiseksi tekstitiedostoista. Tähän mennessä sinulla on parempi käsitys siitä, kuinka tehokkaat Linux-hakutoiminnot ovat.
Tässä on lisäresursseja niille, jotka ovat kiinnostuneita oppimaan lisää Linux-ohjelmoinnista:
Resurssit järjestelmänvalvojille
- Linux-järjestelmänvalvojan opas - Mikä on Linux-käyttöjärjestelmä ja miten se toimii
- Linux-järjestelmänvalvojan opas - Katsaus Linux-virtuaalimuistiin ja levypuskurin välimuistiin
- Linux-järjestelmänvalvojan opas - parhaat käytännöt Linux-järjestelmien seurannassa
- Linux-järjestelmänvalvojan opas - parhaat käytännöt Linux-käynnistyksen ja sammutusten suorittamiseen
- Linux-järjestelmänvalvojan opas - parhaat käytännöt varmuuskopiointitoimintojen tekemiseen ja hallintaan
Resurssit Linux-ytimen ohjelmoijille
- Kuinka Linux-käyttöjärjestelmän muistinhallinta toimii
- Kattava katsaus Linux-ytimen käyttöjärjestelmäprosesseihin
- Mitkä ovat Linux-ytimen tehtävien hallinnan mekanismit
Linux-tiedostojärjestelmän sanakirja
Kattava katsaus Linux-tiedosto- ja hakemistojärjestelmän toimintaan