Linuxin säännöllisten lausekkeiden opetusohjelma: Grep Regex -esimerkki

⚡ Älykäs yhteenveto

Linuxin säännölliset lausekkeet ovat erikoismerkkijonoja, jotka etsivät dataa ja yhdistävät monimutkaisia ​​kuvioita eri työkaluissa, kuten grep, sed ja vi. Ne käyttävät perus-, intervalli-, laajennettuja ja aaltosulkeiden laajennusmuotoja tekstin suodattamiseen tarkasti.

  • 🔎 Mitä he ovat: Säännölliset lausekkeet, lyhennettynä regexp tai regex, kuvaavat tekstimuotoja hakua ja vastaavuuksia varten.
  • 🧩 Perussarja: Symbolit, kuten . ^ $ * ja \, ovat ankkuri-, toisto- ja ohjausmerkkejä kuviossa.
  • 🔢 väli: Hakasulkeet, kuten {n} ja {n,m}, määräävät, kuinka monta kertaa edellinen merkki toistuu.
  • Laajennettu: grep -E:llä, \+ ja \? vastaavat merkin yhtä tai useampaa ja nollaa tai yhtä esiintymää.
  • 🧵 Oikomishoidon laajennus: Aaltosulkeet luovat useita merkkijonoja sekvenssistä tai pilkulla erotetusta luettelosta.
  • 🛠️ Käyttökohteet: Työkalut, kuten grep, sed, tr ja vi, käyttävät säännöllisiä lausekkeita tekstin suodattamiseen.
  • 🤖 Tekoälyn apu: Tekoälyavustajat ja GitHub Copilot voivat luoda, selittää ja debugata regex-kuvioita nopeasti.

Linuxin säännölliset lausekkeet grepillä — perus-, intervalli- ja laajennetun regexin esimerkkejä

Säännölliset lausekkeet ovat yksi tehokkaimmista ominaisuuksista Linux tekstityökalut, joiden avulla voit yhdistää, suodattaa ja muuntaa tietoja kompaktien kuvioiden avulla. Tällä sivulla selitetään perus-, väli- ja laajennetut muodot sekä aaltosulkeiden laajennus toimivien grep-esimerkkien avulla.

Mitä ovat Linuxin säännölliset lausekkeet?

Linuxin säännölliset lausekkeet ovat erikoismerkkejä, jotka auttavat hakemaan tietoja ja löytämään monimutkaisia ​​kuvioita. Säännölliset lausekkeet lyhennetään muotoon 'regexp' tai 'regex'. Niitä käytetään monissa Linux-ohjelmissa, kuten grep, bash, rename, sed ja paljon muuta.

Säännöllisten lausekkeiden tyypit

Ymmärryksen helpottamiseksi opetellaan erityyppiset säännölliset lausekkeet yksi kerrallaan. Tämä sivu käsittelee perus-, väli- ja laajennettuja säännöllisiä lausekkeita ja päättyy aaltosulkeiden laajennukseen.

Perussäännölliset lausekkeet

Joitakin yleisesti käytettyjä komentoja, jotka toimivat säännöllisten lausekkeiden kanssa, ovat tr, sed, vi, ja grep. Alla olevassa taulukossa on lueteltu joitakin perussäännöllisiä lausekkeita.

Symboli Tuotetiedot
. Korvaa minkä tahansa merkin
^ Vastaa merkkijonon alkua
$ Vastaa merkkijonon loppua
* Vastaa edellistä merkkiä nolla kertaa tai useammin
\ Edustaa erikoismerkkejä
() Ryhmittelee säännöllisiä lausekkeita
? Vastaa täsmälleen yhtä merkkiä

Katsotaanpa esimerkkiä. Suorita ensin cat sample näyttääksesi olemassa olevan tiedoston sisällön, kuten alla on esitetty.

cat-esimerkkikomento, joka näyttää olemassa olevan tiedoston sisällön terminaalissa

Seuraavaksi etsi sisältöä, joka sisältää kirjaimen 'a'. Alla olevassa kuvakaappauksessa grep palauttaa kaikki rivit, jotka sisältävät kirjaimen 'a'.

grep etsii esimerkkitiedostosta rivejä, jotka sisältävät kirjaimen a

Sirkkumerkki '^' etsii merkkijonon alkua. Alla oleva esimerkki etsii sisältöä, joka alkaa kirjaimella 'a'.

grep ja sirkumfleksiankkuri, joka löytää vain a-kirjaimella alkavat rivit

Vain rivit, jotka alkavat merkillä, suodatetaan. Rivit, joiden alussa ei ole merkkiä 'a', ohitetaan.

Katsotaanpa toista esimerkkiä. Alla oleva kuvakaappaus näyttää jälleen esimerkkitiedoston sisällön ennen rivin lopun mukaan suodattamista.

Esimerkki tiedostosisällöstä ennen t-kirjaimeen päättyvien rivien suodatusta

Valitse vain ne rivit, jotka päättyvät kirjaimeen 't', käyttämällä '$'-ankkuria alla olevan kuvan mukaisesti.

grep dollariankkurilla, joka valitsee vain rivit, jotka päättyvät t-kirjaimeen

Interval Säännölliset lausekkeet

Nämä lausekkeet määrittävät merkin esiintymien määrän merkkijonossa. Ne on lueteltu alla.

Ilmaisu Tuotetiedot
{n} Vastaa täsmälleen edellistä merkkiä, joka esiintyy 'n' kertaa
{n,m} Vastaa edellistä merkkiä, joka esiintyy "n" kertaa, mutta enintään m
{n, } Vastaa edellistä merkkiä vain, kun se esiintyy "n" kertaa tai useammin

Suodata esimerkiksi pois kaikki rivit, jotka sisältävät merkin 'p'. Alla oleva kuvakaappaus näyttää vastaavat rivit.

grep suodattaa esimerkkitiedoston rivien varalta, jotka sisältävät merkin p

Tarkista nyt, että merkki 'p' esiintyy merkkijonossa täsmälleen kaksi kertaa peräkkäin. Tämän syntaksi on:

cat sample | grep -E p\{2}

Väliaikaottelun tulos näkyy alla.

grep -E välilauseke, joka vastaa merkkiä p täsmälleen kaksi kertaa

Huomautus: Sinun on lisättävä -E näihin säännöllisiin lausekkeisiin.

Laajennetut säännölliset lausekkeet

Nämä säännölliset lausekkeet yhdistävät useamman kuin yhden lausekkeen. Joitakin niistä ovat:

Ilmaisu Tuotetiedot
\+ Vastaa yhtä tai useampaa edellisen merkin esiintymää
\? Vastaa edellisen merkin nollaa tai yhtä esiintymää

Esimerkiksi, hae kaikkia merkin 't' esiintymiä. Alla oleva kuvakaappaus näyttää tuloksen.

grep etsii esimerkkitiedostosta kaikki rivit, jotka sisältävät merkin t

Oletetaan, että haluat suodattaa pois rivit, joissa merkki 'a' edeltää merkkiä 't'. Voit käyttää seuraavanlaista komentoa:

cat sample|grep "a\+t"

Tuloste näkyy seuraavassa kuvakaappauksessa.

grep-laajennettu lauseke, joka vastaa yhtä tai useampaa a-merkkiä ja sen perässä olevaa t-merkkiä

Ahdin laajennus

Aaltosulkeiden laajennuksen syntaksi on joko sarja tai pilkuilla erotettu luettelo kohteista aaltosulkeiden '{}' sisällä. Sarjan aloitus- ja lopetuskohdat erotetaan kahdella pisteellä '..'.

Joitakin esimerkkejä on esitetty alla.

echo-komento aaltosulkeiden laajennuksen avulla useiden merkkijonojen luomiseksi sekvenssistä ja listasta

Yllä olevissa esimerkeissä echo-komento luo merkkijonoja käyttämällä aaltosulkujen laajennusta, jolloin yhdestä kuviosta saadaan useita merkkijonoja.

UKK

grep käyttää oletuksena perussäännöllisiä lausekkeita. egrep ottaa käyttöön laajennetut lausekkeet (sama kuin grep -E), ja fgrep löytää kiinteitä merkkijonoja ilman säännöllistä lauseketta (grep -F). Nykyaikainen GNU grep merkitsee egrepin ja fgrepin vanhentuneiksi, joten grep -E ja grep -F ovat suositeltavampia.

Merkiluokat vastaavat tiettyä merkkiluokkaa. Sulkeissa käytettävät lausekkeet, kuten [az], vastaavat aluetta, kun taas POSIX-luokat, kuten [[:alpha:]], [[:digit:]] ja [[:space:]], vastaavat kirjaimia, numeroita ja välilyöntejä. Ne pitävät mallit luettavina ja siirrettävinä eri kielien välillä.

Lisää -i-optio, esimerkiksi grep -i “hello” esimerkki. Tämä vastaa yhtä lailla Hei, HEI ja hello. Ilman -i-optiota säännölliset lausekkeet ovat kirjainkokoherkkiä, joten isoa ja pientä kirjainta käsitellään kahtena eri merkkinä.

Shell-jokerimerkit (globbing) laajentavat tiedostonimiä, joissa * tarkoittaa mitä tahansa merkkiä ja ? tarkoittaa yhtä merkkiä. Säännölliset lausekkeet vastaavat tiedostojen sisällä olevaa tekstiä, joissa * tarkoittaa nollaa tai useampaa edellistä merkkiä. Samat symbolit tarkoittavat eri asioita kussakin yhteydessä.

Käytä -o-optiota, esimerkiksi grep -o “a\+t” esimerkki. Koko rivin tulostamisen sijaan grep tulostaa vain osan, joka vastaa mallia, yhden osuman riviä kohden. Se on hyödyllinen esimerkiksitracting-arvoja, kuten sähköpostiosoitteita tai numeroita.

Käytä vuorottelua pystysuoran symbolin kanssa. Laajennetussa tilassa grep -E “kissa|koira” esimerkki löytää rivit, jotka sisältävät merkkijonon kissa tai koira. Perustilassa sinun on käytettävä koodinvaihtoa grep “kissa\|koira” esimerkkinä. Vuorottelemalla yksi komento voi etsiä useita malleja kerralla.

Tekoälyavustajat voivat muuttaa selkokielisen kuvauksen toimivaksi säännölliseksi lausekkeeksi, selittää kryptisen kuvion toiminnan ja ehdottaa korjauksia, kun osumaa ei löydy. Koneoppimistyökalut havaitsevat myös toistuvia kuvioita suurissa lokitiedostoissa, joiden kirjoittaminen käsin olisi työlästä.

Kyllä. GitHub Copilot ehdottaa grep-komentoja ja säännöllisiä lausekkeita suoraan kommentista tai osittaisesta mallista kirjoittaessasi. Se nopeuttaa monimutkaisten lausekkeiden kirjoittamista, vaikka sinun tulisi testata luotu malli oikeita esimerkkitietoja vasten ennen kuin luotat siihen.

Tiivistä tämä viesti seuraavasti: