Linux reguláris kifejezések oktatóanyaga: Grep Regex példa

⚡ Okos összefoglaló

A Linux reguláris kifejezések speciális karaktersorozatok, amelyek adatokat keresnek és összetett mintákat egyeztetnek olyan eszközökben, mint a grep, a sed és a vi, alap, intervallum, kiterjesztett és zárójeles zárójel-kiterjesztésű űrlapokat használva a szöveg pontos szűréséhez.

  • ???? Mik ők: A reguláris kifejezések, röviden regexp vagy regex, szöveges mintákat írnak le a kereséshez és az egyezéshez.
  • 🧩 Alapkészlet: Az olyan szimbólumok, mint a . ^ $ * és \, horgony-, ismétlés- és escape-karaktereket tartalmaznak egy mintában.
  • 🔢 Intervallum: A zárójelek, mint például az {n} és az {n,m}, szabályozzák, hogy az előző karakter hányszor ismétlődjön.
  • Kiterjedt: A grep -E, \+ és \? parancsokkal egy karakter egy vagy több, illetve nulla vagy egy előfordulását illesztheti.
  • 🧵 Fogszabályozó bővítése: A kapcsos zárójelek több karakterláncot generálnak egy sorozatból vagy egy vesszővel elválasztott listából.
  • 🇧🇷 Hol használják: Az olyan eszközök, mint a grep, sed, tr és vi, reguláris kifejezéseket használnak a szöveg szűréséhez.
  • 🤖 MI segítség: A mesterséges intelligencia asszisztensek és a GitHub Copilot gyorsan képesek regex mintákat generálni, magyarázni és hibakeresni.

Linux reguláris kifejezések grep segítségével — alap, intervallum és kiterjesztett regex példák

A reguláris kifejezések az egyik legerősebb funkciója a Linux szövegeszközök, amelyek lehetővé teszik az adatok kompakt mintázatokkal való egyeztetését, szűrését és átalakítását. Ez az oldal ismerteti az alap, az intervallumos és a bővített formákat, valamint a zárójeles bővítést, működő grep példákkal.

Mik azok a Linux reguláris kifejezések?

A Linux reguláris kifejezések speciális karakterek, amelyek segítenek az adatok keresésében és az összetett minták egyeztetésében. A reguláris kifejezések rövidítése „regexp” vagy „regex”. Számos Linux programban használják őket, például a grep, bash, rename, sed és egyebek.

A reguláris kifejezések típusai

A könnyebb megértés érdekében ismerkedjünk meg a különböző típusú reguláris kifejezésekkel egyesével. Ez az oldal az alap, az intervallumos és a bővített reguláris kifejezéseket tárgyalja, és a zárójeles zárójelek bővítésével zárul.

Alapvető reguláris kifejezések

Néhány a reguláris kifejezésekkel működő, gyakran használt parancsok közül: tr, sed, vi, és a grep. Az alábbi táblázat néhány alapvető reguláris kifejezést sorol fel.

Szimbólum Leírás
. Bármely karaktert lecserél
^ Egy karakterlánc elejére illeszkedik
$ Egy karakterlánc végére illeszkedik
* Az előző karakter nulla vagy többszöri egyezését adja meg
\ Speciális karaktereket jelöl
() Csoportosítja a reguláris kifejezéseket
? Pontosan egy karakterrel egyezik

Nézzünk egy példát. Először futtasd a cat sample parancsot egy meglévő fájl tartalmának megjelenítéséhez, ahogy az alább látható.

cat mintaparancs, amely egy meglévő fájl tartalmát jeleníti meg a terminálban

Ezután keressen rá az „a” betűt tartalmazó tartalomra. Az alábbi képernyőképen a grep minden olyan sort visszaad, amely tartalmaz egy „a” betűt.

grep parancs a mintafájlban keresi az „a” betűt tartalmazó sorokat

A '^' kalap karakterlánc kezdetére illeszkedik. Az alábbi példa az 'a' betűvel kezdődő tartalmat keresi.

grep parancs kalaphorgonnyal, amely csak az „a” betűvel kezdődő sorokat illeszti ki

Csak a karakterrel kezdődő sorok kerülnek szűrésre. Azok a sorok, amelyek elején nem szerepel az 'a' karakter, figyelmen kívül maradnak.

Nézzünk egy másik példát. Az alábbi képernyőkép ismét a mintafájl tartalmát mutatja a sorvég szerinti szűrés előtt.

Mintafájl tartalma a t betűvel végződő sorok szűrése előtt

Csak azokat a sorokat jelöld ki, amelyek 't' betűvel végződnek a '$' horgonyjellel, ahogy az alább látható.

grep egy dollárhorgonnyal, amely csak a t betűvel végződő sorokat választja ki

Intervallum Reguláris kifejezések

Ezek a kifejezések egy karakter előfordulásainak számát határozzák meg egy karakterláncban. Az alábbiakban felsoroljuk őket.

Kifejezés Leírás
{nem} Pontosan megegyezik az 'n'-szer megjelenő előző karakterrel
{n, m} Megfelel a megelőző karakternek, amely „n”-szer jelenik meg, de legfeljebb m
{n, } Csak akkor felel meg az előző karakternek, ha „n”-szer vagy többször megjelenik

Például szűrje ki az összes olyan sort, amely tartalmazza a 'p' karaktert. Az alábbi képernyőképen láthatók az egyező sorok.

grep parancs a mintafájl kiszűrésére, ha a p karaktert tartalmazó sorok vannak

Most ellenőrizd, hogy a 'p' karakter pontosan kétszer szerepel-e egy karakterláncban, egymás után. A szintaxis a következő:

cat sample | grep -E p\{2}

Az intervallum mérkőzés eredménye az alábbiakban látható.

grep -E intervallumkifejezés, amely pontosan kétszer szerepel a p karakterben

Megjegyzés: Ezekkel a reguláris kifejezésekkel -E-t kell hozzáadnia.

Kibővített reguláris kifejezések

Ezek a reguláris kifejezések egynél több kifejezést kombinálnak. Néhány ezek közül:

Kifejezés Leírás
\+ Megfelel az előző karakter egy vagy több előfordulásának
\? Az előző karakter nullával vagy egy előfordulásával egyezik

Például keresse meg a 't' karakter összes előfordulását. Az alábbi képernyőkép mutatja az eredményt.

grep parancs a mintafájlban keresi az összes olyan sort, amely tartalmazza a t karaktert

Tegyük fel, hogy kiszűrni szeretnéd azokat a sorokat, ahol az 'a' karakter megelőzi a 't' karaktert. Használhatsz egy olyan parancsot, mint az alábbi:

cat sample|grep "a\+t"

A kimenet a következő képernyőképen látható.

grep kiterjesztett kifejezés, amely egy vagy több „a” karaktert illeszt be, majd „t”-t

Merevítő bővítése

A zárójelek kibontásának szintaxisa vagy egy sorozat, vagy egy vesszővel elválasztott lista, amely kapcsos zárójelek között, '{}' található. A sorozat kezdő és befejező elemeit két pont '..' választja el.

Néhány példa alább látható.

echo parancs zárójel-kiterjesztéssel több karakterlánc létrehozásához sorozatból és listából

A fenti példákban az echo parancs zárójel-bővítéssel hoz létre karakterláncokat, egyetlen mintából több karakterláncot előállítva.

GYIK

A grep alapértelmezés szerint alapvető reguláris kifejezéseket használ. Az egrep engedélyezi a kiterjesztett kifejezéseket (ugyanaz, mint a grep -E), az fgrep pedig fix karakterláncokat egyeztet reguláris kifejezés nélkül (grep -F). A modern GNU grep az egrep és az fgrep parancsokat elavultként jelöli meg, ezért a grep -E és a grep -F parancsokat érdemesebb használni.

A karakterosztályok karakterek egy kategóriájára illeszkednek. A zárójeles kifejezések, mint például az [az], egy tartományra illeszkednek, míg a POSIX osztályok, mint például az [[:alpha:]], [[:digit:]] és [[:space:]], betűkre, számokra és szóközökre illeszkednek. Ezek a minták olvashatóak és hordozhatóak a különböző nyelvek között.

Adja hozzá az -i kapcsolót, például a grep -i „hello” parancsot. Ez a Hello, HELLO és hello utasításokra egyaránt illeszkedik. -i nélkül a reguláris kifejezések megkülönböztetik a kis- és nagybetűket, így a nagybetű és a kisbetűs alak két különböző karakterként lesz kezelve.

A shell helyettesítő karakterek (globbing) kiterjesztik a fájlneveket, ahol a * tetszőleges karaktert, a ? pedig egy karaktert jelent. A reguláris kifejezések a fájlokon belüli szövegre illeszkednek, ahol a * az előző karakter nulláját vagy többjét jelenti. Ugyanazok a szimbólumok minden kontextusban mást jelentenek.

Használd az -o kapcsolót, például a grep -o „a\+t” parancsot. A teljes sor kinyomtatása helyett a grep csak a mintának megfelelő részt írja ki, soronként egy találatot. Ez hasznos példáultracolyan értékeket, mint az e-mailek vagy számok.

Használd az alternálást a függőleges vonal szimbólummal. Kiterjesztett módban a grep -E „macska|kutya” példa a macskát vagy kutyát tartalmazó sorokat találja. Alap módban grep „macska\|kutya” példaként kell megadnod. Az alternálás lehetővé teszi, hogy egyetlen parancs egyszerre több mintát keressen.

A mesterséges intelligencia asszisztensei képesek egy egyszerű angol leírást működő reguláris kifejezéssé alakítani, elmagyarázni egy titkosított minta működését, és javításokat javasolni, ha a találat nem sikerül. A gépi tanulási eszközök a nagyméretű naplófájlokban is észlelik az ismétlődő mintákat, amelyeket kézzel nehéz lenne megírni.

Igen. GitHub másodpilóta Gépelés közben közvetlenül egy megjegyzésből vagy egy részleges mintából javasol grep parancsokat és reguláris kifejezéseket. Felgyorsítja az összetett kifejezések írását, bár a generált mintákat valós mintaadatokkal kell tesztelni, mielőtt rájuk hagyatkoznánk.

Foglald össze ezt a bejegyzést a következőképpen: