Despre expresii regulate în egrep.

Scris de Zeph Grunschlag

egrepeste un acronim pentru „Extended Global Regular Expressions Print”. Este un program care scanează linie cu linie un fișier specificat, returnând liniile care conțin un model care se potrivește cu o expresie regulată dată.

Comanda egrep standard arată astfel:

egrep<flags> ‘<expresie regulată>’ <filename>

Câteva stegulețe comune sunt: -c pentru a număra numărul de potriviri reușite și a nu imprima potrivirile efective, -i pentru a face căutarea insensibilă la majuscule și minuscule, -n pentru a imprima numărul liniei înainte de fiecare tipărire a potrivirii, -v pentru a lua complementul expresiei regulate (adică pentru a returna liniile care nu se potrivesc) și -l pentru a imprima numele fișierelor cu linii care se potrivesc expresiei.

Expresiile regulate vin în propria lor variantă egrep (aceasta este foarte asemănătoare cu expresiile regulate găsite în emacs, perl, etc.)

(Litera grecească ε (epsilon) reprezintă șirul gol)

Una dintre principalele diferențe dintre expresiile regulate egrep și expresiile regulate teoretice este că în egrep se permite ca potrivirile să apară oriundeîn interiorul șirului, în timp ce în utilizarea teoretică,potrivirile încep întotdeauna de la primul caracter al șirului și se termină la ultimulcaracter. De exemplu, să luăm în considerare șirul 000001000.În egrep, expresia regulată 010 dă o potrivire; pe de altă parte, expresia regulată teoretică 010 nu se potrivește cu 000001000 pentru că 010 și 000001000 nu sunt egale. Echivalentul teoretic al expresiei 010 din egrep este (0+1)*010(0+1)*. Ce se întâmplă dacă doriți să luați în considerare începutul și sfârșitul șirurilor de caractere? egrep vă pune la dispoziție simbolul ^ pentru specificarea începutului și simbolul dolar $ pentru sfârșit. Așadar, echivalentul egrep al teoreticului 010 este dat de ^010$ .

O altă pereche utilă de simboluri egrep sunt limitele de cuvânt \< și\> care denotă începutul și respectiv sfârșitul unui cuvânt.

Pentru a specifica un set sau un interval de caractere folosiți paranteze. Pentru a delimita setul, folosiți simbolul pălăriei ^ ca prim caracter. De exemplu

  • este setul { a, 9, A, 0, 5 }.
  • este setul complementar ASCII – { a, 9, A, A, 0, 5 }. (totul în afară de a, 9, A, 0 și 5).
  • este setul tuturor literelor minuscule { a, b, c, d, …, z }
  • este setul tuturor literelor ASCII, cu excepția literelor minuscule, a cifrelor între 4 și 9 și a literelor majuscule Q și R.

Câteva exemple:

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

se potrivesc toate liniile din searchfile.txt care încep cu un șir de biți anon-vid, urmat de un spațiu, urmat de un cuvânt alfabetic nevid care termină linia

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.