O regulárních výrazech v egrep.

Napsal Zeph Grunschlag

egrepis je akronym pro „Extended Global Regular Expressions Print“. Je to program, který prohledává zadaný soubor řádek po řádku a vrací řádky, kteréobsahují vzor odpovídající zadanému regulárnímu výrazu.

Standardní příkaz egrep vypadá takto:

egrep<flags> ‚<regularexpression>‘ <filename>

Některé běžné příznaky jsou:

Regulární výrazy mají svou vlastní variantu egrepu (ta je velmi podobná regulárním výrazům v emacsu, perlu atd.).)

(Řecké písmeno ε (epsilon) představuje prázdný řetězec)

Jeden z hlavních rozdílů mezi regulárními výrazy egrep a teoretickými regulárními výrazy spočívá v tom, že v egrepu se shody mohou vyskytovat kdekoliv řetězci, zatímco při teoretickém použití shody vždy začínají od prvního znaku řetězce a končí u posledního znaku. Uvažujme například řetězec 000001000.V egrepu odpovídá regulární výraz 010; na druhé straně teoretický regulární výraz 010 neodpovídá 000001000, protože 010 a 000001000 se nerovnají. Teoretický ekvivalent výrazu 010 v egrepu je (0+1)*010(0+1)*. Co když chcete skutečně zohlednit začátek a konec řetězců? egrep vám nabízí symbol caret ^ pro určení začátku a symbol dolaru $ pro určení konce. Takže egrep ekvivalent teoretického 010 je dán ^010$ .

Další užitečnou dvojicí egrepsymbolů jsou hranice slov \< a\>, které označují začátek, resp. konec slova.

Pro určení množiny nebo rozsahu znaků se používají závorky. Pro označení množiny použijte symbol kloboučku ^jako první znak. Například

  • je množina { a, 9, A, 0, 5 }.
  • je doplňková sada ASCII – { a, 9, A, 0, 5 }. (vše kromě a, 9, A, 0 a 5).
  • je množina všech malých písmen { a, b, c, d, …, z }.
  • je množina všech písmen ASCII kromě malých písmen, číslic mezi 4 a 9 a velkých písmen Q a R.

Několik příkladů:

  • egrep ‚^(0|1)+$‘ searchfile.txt

odpovídá všem řádkům v souboru searchfile.txt, které začínají neprázdným bitovým řetězcem, za nímž následuje mezera a po ní neprázdné abecední slovo, které ukončuje řádek

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.