Tutorial de exprimare regulată Linux: Exemplu de expresii regulă Grep

⚡ Rezumat inteligent

Expresiile regulate Linux sunt secvențe speciale de caractere care caută date și potrivesc modele complexe în instrumente precum grep, sed și vi, folosind forme de bază, interval, extinse și de expansiune acoladă pentru a filtra textul cu precizie.

  • 🔎 Ce sunt ei: Expresiile regulate, prescurtate în regexp sau regex, descriu modele de text pentru căutare și potrivire.
  • 🧩 Set de bază: Simboluri precum . ^ $ * și \ ancorează, repetă și escape caractere într-un model.
  • 🔢 Interval: Acoladele precum {n} și {n,m} controlează de câte ori se repetă caracterul precedent.
  • Extins: Cu grep -E, \+ și \? se potrivesc cu una sau mai multe și cu zero sau o apariție a unui caracter.
  • 🧵 Extinderea ortezei: Acoladele generează mai multe șiruri de caractere dintr-o secvență sau o listă separată prin virgulă.
  • 🛠️ Unde se utilizează: Instrumente precum grep, sed, tr și vi se bazează pe expresii regulate pentru a filtra textul.
  • 🤖 Ajutor AI: Asistenții inteligenți artificiali și GitHub Copilot pot genera, explica și depana rapid modele de expresii regulate.

Expresii regulate Linux cu grep — exemple de expresii regulate de bază, de interval și extinse

Expresiile regulate sunt una dintre cele mai puternice caracteristici ale Linux instrumente text, care vă permit să potriviți, să filtrați și să transformați date cu modele compacte. Această pagină explică formele de bază, de interval și extinsă, plus expansiunea acoladelor, cu exemple grep funcționale.

Ce sunt expresiile regulate Linux?

Expresiile regulate Linux sunt caractere speciale care ajută la căutarea datelor și la potrivirea modelelor complexe. Expresiile regulate sunt prescurtate ca „regexp” sau „regex”. Sunt utilizate în multe programe Linux, cum ar fi grep, bash, redenumire, sed și multe altele.

Tipuri de expresii regulate

Pentru o mai bună înțelegere, haideți să învățăm diferitele tipuri de expresii regulate pe rând. Această pagină acoperă expresiile regulate de bază, de interval și extinse și se încheie cu expansiunea acoladelor.

Expresii regulate de bază

Unele dintre comenzile utilizate în mod obișnuit care lucrează cu expresii regulate sunt tr, sed, viși grep. Tabelul de mai jos listează câteva dintre expresiile regulate de bază.

Simbol Descriere
. Înlocuiește orice caracter
^ Se potrivește cu începutul unui șir de caractere
$ Se potrivește cu sfârșitul unui șir de caractere
* Se potrivește cu zero sau mai multe dintre caracterele precedente
\ Reprezintă caractere speciale
() Grupează expresiile regulate
? Se potrivește cu exact un caracter

Să vedem un exemplu. Mai întâi, rulați comanda cat sample pentru a afișa conținutul unui fișier existent, așa cum se arată mai jos.

exemplu de comandă cat care afișează conținutul unui fișier existent în terminal

Apoi, căutați conținut care conține litera „a”. Captura de ecran de mai jos arată grep returnând fiecare linie care include un „a”.

grep caută în fișierul exemplu linii care conțin litera a

Signul circumflex „^” se potrivește cu începutul unui șir de caractere. Exemplul de mai jos caută conținut care începe cu litera „a”.

grep cu o ancoră caret care se potrivește doar cu liniile care încep cu litera a

Sunt filtrate doar liniile care încep cu caracterul „a”. Liniile care nu conțin caracterul „a” la început sunt ignorate.

Să ne uităm la un alt exemplu. Captura de ecran de mai jos arată din nou conținutul fișierului exemplu înainte de filtrarea după sfârșitul liniei.

Conținutul fișierului exemplu afișat înainte de filtrarea liniilor care se termină cu litera t

Selectați doar acele linii care se termină cu litera „t” utilizând ancora „$”, așa cum se arată mai jos.

grep cu o ancoră dolar selectând doar liniile care se termină cu litera t

Interval Expresii regulate

Aceste expresii specifică numărul de apariții ale unui caracter într-un șir de caractere. Sunt enumerate mai jos.

Expresie Descriere
{nu} Se potrivește cu caracterul precedent care apare exact de „n” ori
{n,m} Se potrivește cu caracterul precedent care apare de „n” ori, dar nu mai mult de m
{n,} Se potrivește cu caracterul precedent numai atunci când apare de „n” ori sau de mai multe ori

De exemplu, filtrați toate liniile care conțin caracterul „p”. Captura de ecran de mai jos prezintă liniile corespondente.

grep filtrând fișierul exemplu pentru liniile care conțin caracterul p

Acum verificați dacă caracterul „p” apare exact de două ori într-un șir de caractere, una după alta. Sintaxa pentru aceasta este:

cat sample | grep -E p\{2}

Rezultatul meciului la intervale este prezentat mai jos.

grep -E expresie de interval care corespunde caracterului p care apare exact de două ori

Notă: trebuie să adăugați -E cu aceste expresii regulate.

Expresii regulate extinse

Aceste expresii regulate combină mai multe expresii. Câteva dintre ele sunt:

Expresie Descriere
\+ Se potrivește cu una sau mai multe apariții ale caracterului anterior
\? Se potrivește cu zero sau cu o apariție a caracterului anterior

De exemplu, căutați toate aparițiile caracterului „t”. Captura de ecran de mai jos arată rezultatul.

grep caută în fișierul exemplu toate liniile care conțin caracterul t

Să presupunem că vrei să filtrezi liniile în care caracterul „a” precede caracterul „t”. Poți folosi o comandă precum cea de mai jos:

cat sample|grep "a\+t"

Rezultatul este afișat în următoarea captură de ecran.

expresie extinsă grep care se potrivește cu unul sau mai multe caractere a urmate de t

Expansiunea bretelor

Sintaxa pentru extinderea acoladelor este fie o secvență, fie o listă de elemente separate prin virgulă, între acoladele „{}”. Elementele inițiale și finale dintr-o secvență sunt separate prin două puncte, „..”.

Câteva exemple sunt prezentate mai jos.

comanda echo folosind expansiunea acoladelor pentru a genera mai multe șiruri de caractere dintr-o secvență și o listă

În exemplele de mai sus, comanda echo creează șiruri de caractere folosind expansiunea acoladelor, producând mai multe șiruri dintr-un singur model.

Întrebări frecvente

grep folosește în mod implicit expresii regulate de bază. egrep permite expresii extinse (la fel ca grep -E), iar fgrep potrivește șiruri fixe fără expresie regulată (grep -F). Grep-ul GNU modern marchează egrep și fgrep ca fiind depreciate, așa că este de preferat grep -E și grep -F.

Clasele de caractere se potrivesc cu o categorie de caractere. Expresiile între paranteze, cum ar fi [az], se potrivesc cu un interval, în timp ce clasele POSIX, cum ar fi [[:alpha:]], [[:digit:]] și [[:space:]], se potrivesc cu litere, numere și spații albe. Acestea mențin modelele lizibile și portabile în diferite setări regionale.

Adăugați opțiunea -i, de exemplu grep -i „hello” sample. Aceasta se potrivește cu Hello, HELLO și hello deopotrivă. Fără -i, expresiile regulate sunt sensibile la majuscule/minuscule, deci o literă mare și forma sa mică sunt tratate ca două caractere diferite.

Caracterele wildcard din shell (globbing) extind numele fișierelor, unde * înseamnă orice caractere și ? înseamnă un caracter. Expresiile regulate potrivesc textul din fișiere, unde * înseamnă zero sau mai multe dintre caracterele precedente. Aceleași simboluri înseamnă lucruri diferite în fiecare context.

Folosește opțiunea -o, de exemplu grep -o „a\+t” exemplu. În loc să afișeze întreaga linie, grep afișează doar partea care se potrivește cu modelul, câte o potrivire pe linie. Este utilă de exemplutracvalori ting precum adrese de e-mail sau numere.

Folosește alternanța cu simbolul bară verticală. În modul extins, grep -E „cat|dog” exemplu potrivește liniile care conțin cat sau dog. În modul de bază, trebuie să îl folosești ca escape grep „cat\|dog” exemplu. Alternarea permite unei singure comenzi să caute mai multe modele simultan.

Asistenții inteligenți artificiali pot transforma o descriere simplă într-o expresie regulată funcțională, pot explica ce face un model criptic și pot sugera soluții atunci când o potrivire eșuează. Instrumentele de învățare automată detectează, de asemenea, modele recurente în fișiere jurnal mari, care ar fi dificil de scris manual.

Da. Copilotul GitHub sugerează comenzi grep și expresii regulate direct dintr-un comentariu sau dintr-un model parțial pe măsură ce tastați. Accelerează scrierea expresiilor complexe, deși ar trebui să testați orice model generat în raport cu date eșantion reale înainte de a vă baza pe el.

Rezumați această postare cu: