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

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

Linuxin säännölliset lausekkeet ovat erikoismerkkejä, jotka auttavat etsimään tietoja ja yhdistämään monimutkaisia ​​kuvioita. Säännölliset lausekkeet lyhennetään nimellä "regulexp" tai "regex". Niitä käytetään monissa Linux-ohjelmissa, kuten grep, bash, uudelleennimeäminen, sed jne.

Säännöllisten lausekkeiden tyypit

Ymmärtämisen helpottamiseksi meidän on opittava erityyppiset Regexit yksitellen.

Napauta tätä jos video ei ole saatavilla

Perussäännölliset lausekkeet

Joitakin yleisesti käytettyjä komentoja säännöllisillä lausekkeilla ovat tr, sed, vi ja grep. Alla on lueteltu joitain perussäännöstöistä.

Symboli Descriptionit
. korvaa minkä tahansa merkin
^ vastaa merkkijonon alkua
$ vastaa merkkijonon loppua
* vastaa nollaa tai useampaa kertaa edellistä merkkiä
\ Edustaa erikoismerkkejä
() Ryhmittelee säännöllisiä lausekkeita
? Vastaa täsmälleen yhtä hahmoa

Katsotaanpa esimerkki.

Suorita kissanäyte nähdäksesi olemassa olevan tiedoston sisällön

Perussäännölliset lausekkeet

Hae sisältöä, joka sisältää kirjaimen "a".

Perussäännölliset lausekkeet

"^' vastaa merkkijonon alkua. Etsitään sisältöä, joka ALKAA kirjaimella a

Perussäännölliset lausekkeet

Vain merkillä alkavat rivit suodatetaan. Rivit, jotka eivät sisällä merkkiä 'a' alussa ohitetaan.

Katsotaanpa toista esimerkkiä -

Perussäännölliset lausekkeet

Valitse vain ne rivit, joiden lopussa on t $

Perussäännölliset lausekkeet

Interval Säännölliset lausekkeet

Nämä lausekkeet kertovat meille merkin esiintymien lukumäärästä merkkijonossa. He ovat

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

Esimerkiksi:

Suodata pois kaikki rivit, jotka sisältävät merkin "p"

Interval Säännölliset lausekkeet

Haluamme tarkistaa, että merkki 'p' esiintyy merkkijonossa täsmälleen 2 kertaa peräkkäin. Tätä varten syntaksi olisi:

cat sample | grep -E p\{2}

Interval Säännölliset lausekkeet

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

Laajennetut säännölliset lausekkeet

Nämä säännölliset lausekkeet sisältävät useamman kuin yhden lausekkeen yhdistelmiä. Jotkut niistä ovat:

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

Esimerkiksi:

Etsitään kaikkia merkkejä 't'

Laajennetut säännölliset lausekkeet

Oletetaan, että haluamme suodattaa pois rivit, joissa merkki "a" edeltää merkkiä "t"

Voimme käyttää komentoja kuten

cat sample|grep "a\+t"

Laajennetut säännölliset lausekkeet

Ahdin laajennus

Aaltosulkeiden laajennuksen syntaksi on joko sarja tai pilkuilla eroteltu luettelo kohteista, jotka sijaitsevat kiharoiden aaltosulkeiden "{}" sisällä. Sarjan aloitus- ja loppukohdat erotetaan kahdella pisteellä "...".

Joitain esimerkkejä:

Ahdin laajennus

Yllä olevissa esimerkeissä echo-komento luo merkkijonoja aaltosulkeiden laajennuksen avulla.

Yhteenveto:

  • Säännölliset lausekkeet ovat merkkijoukkoa, jota käytetään merkkijonojen kuvioiden tarkistamiseen
  • Niitä kutsutaan myös "säännöllisiksi lausekkeiksi" ja "säännöllisiksi lauseiksi".
  • On tärkeää oppia säännölliset lausekkeet skriptien kirjoittamista varten
  • Jotkut perussäännölliset lausekkeet ovat:
Symboli Descriptionit
. korvaa minkä tahansa merkin
^ vastaa merkkijonon alkua
$ vastaa merkkijonon loppua
  • Jotkut laajennetut säännölliset lausekkeet ovat:
Ilmaisu Tuotetiedot

\+

Vastaa yhtä tai useampaa edellisen merkin esiintymää
\? Vastaa edellisen merkin nollaa tai yhtä esiintymää
  • Jotkut intervallisäännölliset lausekkeet ovat:
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
  • Aaltosulkeiden laajennusta käytetään merkkijonojen luomiseen. Se auttaa luomaan useita merkkijonoja yhdestä.