S terminálom: Používanie regulárnych výrazov

Jedna z vecí, ktorá sa mi na termináli Linux vždy páčila, je to, čo môžete dosiahnuť použitím regulárnych výrazov. Či už potrebujeme nájsť komplikovaný text alebo ho nahradiť iným, použitie regulárnych výrazov môže prácu veľmi zjednodušiť. Začnime od začiatku:

UPOZORNENIE: Tento príspevok predstavuje bolesť v zadku. Neustále čítanie tohto príspevku môže spôsobiť stratu vedomia. Predtým, ako si prečítate celý príspevok, urobte medzi nimi prestávky alebo sa opýtajte svojho lekára alebo lekárnika.

Čo je to regulárny výraz?

Regulárny výraz je rad špeciálnych znakov, ktoré nám umožňujú opísať text, ktorý chceme nájsť. Napríklad, ak by sme chceli vyhľadať slovo „linux“, stačilo by ho vložiť do programu, ktorý používame. Samotné slovo je regulárny výraz. Zatiaľ sa to zdá veľmi jednoduché, ale čo keď chceme nájsť všetky čísla v určitom súbore? Alebo všetky riadky, ktoré sa začínajú veľkým písmenom? V týchto prípadoch už nemôžete napísať jednoduché slovo. Riešením je použitie regulárneho výrazu.

Regulárne výrazy vs. vzory súborov.

Predtým, ako sa dostaneme k predmetu regulárnych výrazov, chcem objasniť bežné nedorozumenie týkajúce sa regulárnych výrazov. Regulárny výraz nie je to, čo dávame ako parameter do príkazov ako rm, cp atď., Ktoré odkazujú na rôzne súbory na pevnom disku. To by bol vzor súboru. Regulárne výrazy, aj keď sú podobné tým, že používajú niektoré bežné znaky, sú odlišné. Vzor súboru sa spustí proti súborom na pevnom disku a vráti tie, ktoré sa úplne zhodujú so vzorom, zatiaľ čo regulárny výraz sa spustí proti textu a vráti riadky, ktoré obsahujú hľadaný text. Napríklad regulárny výraz zodpovedajúci vzoru *.* bolo by to niečo ako ^.*\..*$

Typy regulárnych výrazov.

Nie všetky programy používajú rovnaké regulárne výrazy. Nie oveľa menej. Existuje niekoľko viac alebo menej štandardných typov regulárnych výrazov, existujú však programy, ktoré mierne menia syntax, obsahujú vlastné prípony alebo dokonca používajú úplne odlišné znaky. Preto, ak chcete používať regulárne výrazy s programom, ktorý dobre neovládate, najskôr je potrebné pozrieť sa do príručky alebo dokumentácie k programu a zistiť, aké sú regulárne výrazy, ktoré rozpoznáva.

Najprv existujú dva hlavné typy regulárnych výrazov, ktoré obsahuje štandard POSIX, čo používajú nástroje Linux. Sú to základné a rozšírené regulárne výrazy. Mnoho príkazov, ktoré pracujú s regulárnymi výrazmi, ako napríklad grep alebo sed, vám umožňuje používať obidva typy. Budem o nich hovoriť nižšie. Existujú aj regulárne výrazy v štýle PERL a potom existujú programy ako vim alebo emacs, ktoré používajú ich varianty. V závislosti na tom, čo chceme robiť, môže byť vhodnejšie použiť jedno alebo druhé.

Testovanie regulárnych výrazov.

Syntax regulárnych výrazov nie je vôbec triviálna. Keď budeme musieť napísať zložitý regulárny výraz, budeme pred reťazou špeciálnych znakov, ktorým na prvý pohľad nebude možné porozumieť, takže aby sme sa naučili, ako ich používať, je nevyhnutné mať spôsob, ako urobiť všetky testy, ktoré chceme a uvidíme výsledky ľahko. Preto teraz uvediem niekoľko príkazov, pomocou ktorých môžeme robiť testy a experimentovať so všetkým, čo potrebujeme, kým nebudú dominovať regulárne výrazy.

Prvý z nich je príkaz grep. Toto je príkaz, ktorý budeme najčastejšie používať na vyhľadávanie. Syntax je nasledovná:

grep [-E] 'REGEX' FICHERO
COMANDO | grep [-E] 'REGEX'

Odporúčam vždy dávať regulárne výrazy do jednoduchých úvodzoviek, aby sa shell do toho nedostal. Prvým spôsobom je nájsť regulárny výraz v súbore. Druhá umožňuje filtrovanie výstupu príkazu prostredníctvom regulárneho výrazu. Grep štandardne používa základné regulárne výrazy. Možnosť -E slúži na použitie rozšírených regulárnych výrazov.

Trik, ktorý nám môže pomôcť zistiť, ako fungujú regulárne výrazy, je povoliť použitie farby v príkaze grep. Takto bude zvýraznená časť textu, ktorá sa zhoduje s regulárnym výrazom, ktorý používame. Ak chcete aktivovať farbu v príkaze grep, ubezpečte sa, že je použitá premenná prostredia GREP_OPTIONS obsahovať v hodnote --color, ktoré je možné vykonať pomocou tohto príkazu:

GREP_OPTIONS=--color

Môžeme ho vložiť do súboru .bashrc, aby sme ho mali vždy aktivovaný.

Ďalším spôsobom, ako používať regulárne výrazy, je použitie príkazu sed. Je to vhodnejšie na nahradenie textu, ale dá sa to použiť aj na vyhľadávanie. Jeho syntax by bola nasledovná:

sed -n[r] '/REGEX/p' FICHERO
COMANDO | sed -n[r] '/REGEX/p'

Príkaz sed štandardne používa aj základné regulárne výrazy, rozšírené regulárne výrazy môžete použiť s voľbou -r.

Ďalším príkazom, ktorý chcem tiež pomenovať, je awk. Tento príkaz je možné použiť na veľa vecí, pretože vám umožňuje písať skripty vo vašom vlastnom programovacom jazyku. Ak chceme nájsť regulárny výraz v súbore alebo na výstupe príkazu, spôsob jeho použitia by bol tento:

awk '/REGEX/' FICHERO
COMANDO | awk '/REGEX/'

Tento príkaz vždy používa rozšírené regulárne výrazy.

Na vykonanie našich testov budeme tiež potrebovať text, ktorý bude slúžiť ako príklad na jeho prehľadanie. Môžeme použiť nasledujúci text:

- Lista de páginas wiki:

ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/

- Fechas de lanzamiento:

Arch Linux: 11-03-2002
Gentoo: 31/03/2002
CentOs: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10/2004

Desde Linux Rulez.

Toto je text, ktorý použijem pre príklady zvyšku príspevku, preto vám odporúčam ho skopírovať do súboru, aby ste ho mali po ruke z terminálu. Môžete dať požadované meno. Nazval som to regulárny výraz.

Počiatočná lekcia.

Teraz máme všetko, čo potrebujeme na začatie testovania regulárnych výrazov. Poďme kúsok po kúsku. Uvediem niekoľko príkladov hľadania s regulárnymi výrazmi, v ktorých vysvetlím, na čo slúžia jednotlivé znaky. Nie sú to veľmi dobré príklady, ale keďže budem mať veľmi dlhý post, už to nechcem komplikovať. A ja len poškriabem povrch toho, čo sa dá robiť pomocou regulárnych výrazov.

Najjednoduchšie zo všetkých je vyhľadať konkrétne slovo. Predpokladajme napríklad, že chceme vyhľadať všetky riadky, ktoré obsahujú slovo „Linux“. Toto je najjednoduchšie, pretože musíme iba napísať:

grep 'Linux' regex

A môžeme vidieť výsledok:

OblúkLinux: https://wiki.archlinux.org/ Arch Linux: 11-03-2002 od Linux Rulez.

Toto sú tri riadky, ktoré obsahujú slovo „Linux“, ktoré, ak sme použili farebný trik, sa objaví zvýraznené. Všimnite si, že rozpoznáva slovo, ktoré hľadáme, aj keď je súčasťou dlhšieho slova ako v „ArchLinux“. Nezvýrazňuje však slovo „linux“, ktoré sa nachádza v adrese URL „https://wiki.archlinux.org/“. Je to preto, lebo sa tam zobrazuje s malým písmenom „l“ a hľadali sme ho veľkými písmenami. Príkaz grep má na to možnosti, ale nebudem o nich hovoriť v článku o regulárnych výrazoch.

Pomocou tohto jednoduchého testu môžeme vyvodiť prvý záver:

  • Normálny znak vložený do regulárneho výrazu sa zhoduje.

Čo znamená, že ak vložíte písmeno „a“, bude hľadať písmeno „a“. Zdá sa to logické, že? 🙂

Teraz predpokladajme, že chceme hľadať slovo „CentO“, za ktorým nasleduje akýkoľvek znak, ale iba jeden znak. Na tento účel môžeme použiť znak „.“, Čo je zástupný znak, ktorý sa zhoduje s ľubovoľným znakom, ale iba s jedným:

grep 'CentO.' regex

A výsledok je:

CentOS: http://wiki.centos.org/
centov: 14-05-2004 03:32:38

Čo znamená, že obsahuje „S“ v „CentOS“, aj keď v jednom prípade je veľké a v druhom malé. Keby sa na tom mieste objavila akákoľvek iná postava, zahŕňala by to aj to. Máme už druhé pravidlo:

  • Znak „.“ sa zhoduje s ľubovoľným znakom.

Už to nie je také malicherné, ako sa zdalo, ale s tým nemôžeme urobiť veľa. Poďme trochu ďalej. Predpokladajme, že chceme nájsť riadky, v ktorých sa objavujú roky 2002 a 2004. Vyzerajú ako dve vyhľadávania, ale dajú sa vykonať naraz takto:

grep '200[24]' regex

Čo znamená, že chceme nájsť číslo 200, za ktorým nasleduje 2 alebo 4. Výsledok je tento:

ArchLinux: 11-03-2002
Gentoo: 31. /2002
CentOS: 14-05-2004 03:32:38
Ubuntu: 20/10/2004

Čím sa dostávame k tretiemu pravidlu:

  • Viaceré znaky uvedené v zátvorkách sa zhodujú s ľubovoľnými znakmi v zátvorkách.

Konzoly poskytujú viac hry. môžu byť tiež použité na vylúčenie znakov. Predpokladajme napríklad, že chceme vyhľadávať weby, kde sa zobrazuje znak „:“, ale za ním nie je znak „/“. Príkaz by vyzeral takto:

grep ':[^/]' regex

Jednoducho ide o to, aby ste do zátvorky vložili ako prvý znak znak „^“. Nižšie môžete umiestniť všetky požadované znaky. Výsledkom tohto posledného príkazu je:

Arch Linux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Arch Linux: 11. 03. 2002 Gentoo: 31 CentOs: 14 05 - 2004 03:32:38 Debian: 16. 08. 1993 Ubuntu: 20/10/2004

Teraz je za názvami distribúcií zvýraznený znak „:“, nie však tie v adresách URL, pretože adresy URL majú za sebou „/“.

  • Ak vložíte znak „^“ na začiatok zátvorky, bude sa zhodovať s ľubovoľným znakom okrem ostatných znakov v zátvorke.

Ďalšou vecou, ​​ktorú môžeme urobiť, je určiť rozsah znakov. Napríklad na vyhľadanie ľubovoľného čísla nasledovaného znakom „-“ by to vyzeralo takto:

grep '[0-9]-' regex

Týmto určujeme znak medzi 0 a 9 a potom znamienko mínus. Pozrime sa na výsledok:

ArchLinux: 11-03-2002 CentOs: 14-05-2004 03: 32: 38

V zátvorkách je možné určiť viac rozsahov, aby sa rozsahy aj so samostatnými znakmi mohli kombinovať.

  • Umiestnenie dvoch znakov oddelených v zátvorkách znakom „-“ sa zhoduje s ľubovoľným znakom v rozsahu.

Pozrime sa teraz, či môžeme vybrať prvú časť adries URL. Ten, ktorý hovorí „http“ alebo „https“. Líšia sa iba v konečnom „s“, urobme to teda nasledovne:

grep -E 'https?' regex

Otazník slúži na to, aby bol znak zľava voliteľný. Teraz sme však do príkazu pridali možnosť -E. Je to tak preto, lebo výsluch je znakom rozšírených regulárnych výrazov. Doteraz sme používali základné regulárne výrazy, takže nebolo treba nič dávať. Pozrime sa na výsledok:

ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/wiki/Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/ Ubuntu: https: //wiki.ubuntu.com/

Takže už máme nové pravidlo:

  • Znak, za ktorým nasleduje „?“ sa zhoduje s daným znakom alebo žiadnym. Toto platí iba pre rozšírené regulárne výrazy.

Teraz nájdeme dve úplne odlišné slová. Pozrime sa, ako nájsť riadky, ktoré obsahujú slovo „Debian“ aj „Ubuntu“.

grep -E 'Debian|Ubuntu' regex

Pomocou zvislej čiary môžeme oddeliť dva alebo viac rôznych regulárnych výrazov a vyhľadať riadky, ktoré sa zhodujú s ktorýmkoľvek z nich:

debian: https://wiki.debian.org/
ubuntu: https://wiki.ubuntu.com/
debian: 16 / 08 / 1993
ubuntu: 20 / 10 / 2004
  • Znak «|» slúži na oddelenie viacerých regulárnych výrazov a zhoduje sa s ktorýmkoľvek z nich. Je špecifický aj pre rozšírené regulárne výrazy.

Pokračujme. Teraz budeme hľadať slovo „Linux“, ale iba tam, kde nie je prilepené k ďalšiemu slovu vľavo. Môžeme to urobiť takto:

grep '\

Dôležitý znak je tu „<“, je však potrebné ho uniknúť vložením znaku „\“ pred neho, aby ho grep interpretoval ako špeciálny znak. Výsledok je nasledovný:

Oblúk Linux: 11-03-2002 od Linux Rulez.

Môžete tiež použiť „\>“ na hľadanie slov, ktoré nie sú vedľa seba. Poďme na príklad. Vyskúšajme tento príkaz:

grep 'http\>' regex

Výstup, ktorý produkuje, je tento:

CentOS: http: //wiki.centos.org/

„Http“ vyšiel, ale nie „https“, pretože v „https“ je stále napravo od „p“ znak, ktorý môže byť súčasťou slova.

  • Znaky „<“ a „>“ sa zhodujú so začiatkom a koncom slova. Týmto znakom je potrebné uniknúť, aby sa interpretovali ako doslovné znaky.

Ideme s vecami trochu komplikovanejšie. Znak „+“ sa zhoduje so znakom po jeho ľavej strane, ktorý sa opakuje najmenej raz. Tento znak je k dispozícii iba s rozšírenými regulárnymi výrazmi. Pomocou neho môžeme vyhľadávať napríklad sekvencie niekoľkých čísel v rade, ktoré sa začínajú zámenom „:“.

grep -E ':[0-9]+' regex

výsledok:

CentOs: 14-05-2004 03: 32: 38

Číslo 38 je tiež zvýraznené, pretože sa tiež začína znakom „:“.

  • Znak „+“ sa zhoduje so znakom naľavo, opakuje sa najmenej raz.

Počet opakovaní môžete tiež ovládať pomocou znakov „{“ a „}“. Cieľom je vložiť do zložených zátvoriek číslo, ktoré označuje presný počet opakovaní, ktoré požadujeme. Môžete tiež uviesť rozsah. Pozrime sa na príklady týchto dvoch prípadov.

Najprv nájdeme všetky štvorciferné sekvencie, ktoré existujú:

grep '[0-9]\{4\}' regex

Upozorňujeme, že zložené zátvorky musia byť ukončené, ak používame základné regulárne výrazy, ale nie, ak používame rozšírené. S rozšíreným by to bolo takto:

grep -E '[0-9]{4}' regex

Výsledkom by v obidvoch prípadoch bolo toto:

ArchLinux: 11-03-2002
Gentoo: 31. /2002
CentOS: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10 /2004
  • Znaky „{“ a „}“ s počtom medzi nimi sa zhodujú s predchádzajúcim znakom a opakovali zadaný počet opakovaní.

Teraz ďalší príklad so zloženými zátvorkami. Predpokladajme, že chceme nájsť slová, ktoré majú 3 až 6 malých písmen. Mohli by sme urobiť nasledovné:

grep '[a-z]\{3,6\}' regex

A výsledok by bol tento:

- Ľista de stranas wiki: TORCHLinux: https: //wiki.Arch Linux.org/ Gpotom: https: //wiki.gentoo.org/wiki/Main_Pvek
CzodpovedajúceOS: http: //wiki.CentOS.org/ Debian: https: //wiki.debian.org/ ALEBOUbuntu: https: //wiki.ubuntu.com/ - F.chýba ti de spustenie: TORCH Linux: 11-03-2002 Gpotom: 31. 03. 2002 CzodpovedajúceOs: 14-05-2004 03:32:38
Debian: 16 UUbuntu: 20 Dto je Linux Rulez.

Čo, ako vidíte, veľmi nevyzerá ako to, čo sme chceli. Je to preto, lebo regulárny výraz nájde písmená v iných slovách, ktoré sú dlhšie. Vyskúšajme túto inú verziu:

grep '\<[a-z]\{3,6\}\>' regex

výsledok:

- Zoznam stránok wiki: ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/wiki/ Main_Page CentOS: http: //wiki.CentOS.org/ Debian: https: //wiki.debian.org/ Ubuntu: https: //wiki.ubuntu.com/

Toto už vyzerá skôr ako to, čo sme chceli. To, čo sme urobili, je vyžadovať, aby slovo začalo tesne pred prvým písmenom a skončilo tesne po poslednom písmene.

  • Znaky „{“ a „}“, ktoré majú medzi sebou dve čísla oddelené čiarkou, sa zhodujú s predchádzajúcim znakom tak často, ako je uvedené týmito dvoma číslami.

Pozrime sa teraz na znak, ktorý je prvočíslom „+“. Je to „*“ a jeho fungovanie je veľmi podobné, iba ak sa zhoduje s ľubovoľným počtom znakov vrátane nuly. To znamená, že robí to isté ako znak „+“, ale nevyžaduje, aby sa v texte objavil znak zľava. Skúsme napríklad vyhľadať tie adresy, ktoré sa začínajú na wiki a končia sa org:

grep 'wiki.*org' regex

Pozrime sa na výsledok:

ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/ wiki / Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/

Perfecto.

Teraz posledná postava, ktorú uvidíme. Znak „\“ sa používa na uniknutie znaku napravo od neho, aby stratil svoj zvláštny význam. Napríklad: Predpokladajme, že chceme vyhľadať priamky, ktoré končia bodom. Prvá vec, ktorá by nás mohla napadnúť, by mohla byť táto:

grep '.$' regex

Výsledok nie je to, čo hľadáme:

- Zoznam wiki stránok:
ArchLinux: https://wiki.archlinux.org/
Gentoo: https://wiki.gentoo.org/wiki/Main_Page
CentOS: http://wiki.centos.org/
Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
- Dátumy vydania: Arch Linux: 11. 03. 2002
Gentoo: 312
CentOs: 14-05-2004 03:32:38
Debian: 16. 08. 1993
Ubuntu: 204
Desde Linux Rulez.

Je to preto, lebo „.“ zhoduje sa s čímkoľvek, takže regulárny výraz sa zhoduje s posledným znakom každého riadku, nech už je akýkoľvek. Riešením je toto:

grep '\.$' regex

Teraz chceme dosiahnuť výsledok:

Desde Linux Rulez.

Koniec hry

Aj keď je téma regulárnych výrazov taká zložitá, že by som dal za sériu článkov, myslím si, že už som vám dal dosť bolesti. Ak sa vám podarilo doraziť, gratulujeme. A ak ste to všetko prečítali na jedno posedenie, vezmite si aspirín alebo niečo také, pretože to nemôže byť dobré.

To je zatiaľ všetko. Ak sa vám tento článok páči, možno napíšem ďalší. Medzitým vám odporúčam vyskúšať všetky regulárne výrazy v termináli, aby ste jasne videli, ako fungujú. A pamätajte: Iba Chuck Norris dokáže analyzovať HTML pomocou regulárnych výrazov.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   Ezequiel dijo

    Aký by bol náš život bez regulárneho výrazu?
    Článok je veľmi užitočný, ale budem ho čítať kúsok po kúsku. Mnohokrat dakujem.

    1.    hexborg dijo

      Ďakujem za komentár. Stále neverím, že môj článok vyšiel. 🙂 Vyšlo to s nejakou chybou, ale dúfam, že je to užitočné. 🙂

  2.   Scalibur dijo

    Ďakujem youssssssss! ..

    Pred časom som si musel niečo naštudovať o regulárnych výrazoch .. ..Ďakujem za poučenie .. a podrobného sprievodcu, ako sa naučiť každý z nich ..

    Veľmi dobre! .. .. idem si zobrať ten aspirín .. ee

    1.    hexborg dijo

      Nie je začo. Odvaha a to, že regulárne výrazy s vami nemôžu. 🙂

  3.   tanrax dijo

    Fantastický príspevok! Dobrá práca. Zaujímalo by ma, koľko hodín ti to trvalo 😀

    1.    hexborg dijo

      LOL !! Otázka znie: Koľko hodín by mi trvalo, keby som povedal všetko, čo som chcel povedať? Nekonečné !! 🙂

  4.   Tammuz dijo

    jednu vec som nevedel, dobrý článok!

    1.    hexborg dijo

      Ďakujem. Je radosť sa s vami o ne podeliť.

  5.   helena_ryuu dijo

    super vysvetlenie. gratulujem! naozaj užitočné!

    1.    hexborg dijo

      Som rád, že ste to považovali za užitočné. Takže je radosť písať.

  6.   proti dijo

    Toto by malo ísť niečím špeciálne. Rovnako ako odporúčané, ale majú veľmi špecifickú užitočnosť. Celkom užitočné, aj keď by som bol rád, keby sa to vzťahovalo na Vima.

    1.    hexborg dijo

      To je otázka, ktorú si kladiem. Mám na mysli ešte niekoľko článkov o regulárnych výrazoch. A mohol som v nich hovoriť o vim. Má určité rozdiely od toho, čo som vysvetlil v tomto článku. Je to otázka toho, ako sa do toho pustiť. 🙂

  7.   Fernando dijo

    Dobre!

    Váš článok je veľmi dobrý, je kuriózny, nedávno (práve teraz) som na svojej stránke zverejnil príspevok, ktorý som pripravoval niekoľko dní, kde som zhromaždil zoznam metaznakov pre regulárne výrazy a niekoľko príkladov. A bolo fér vstúpiť DesdeLinux a pozrite si príspevok na rovnakú tému!

    Ak je to nejaká útecha, moja je Oveľa VIAC PUSSY 😀

    Určite sú regulárne výrazy jednou z najužitočnejších vecí. Normálne ich používam na orezanie výstupu príkazov a na uchovanie časti, ktorá ma zaujíma, a potom s ňou interagujem napríklad v skripte bash. Veľa som ich používal aj na univerzite a majú zásadný význam pri konštrukcii prekladačov (pri definovaní lexikografických a parserov). Skrátka celý svet.

    Zdravím a veľmi veľmi dobrá práca.

    1.    hexborg dijo

      Děkuju mnohokrát.

      Páčil sa mi aj váš článok. Je to výstižnejšie ako moje. Môže slúžiť ako rýchla referencia. Je náhoda, že sme ich napísali súčasne. Vidíte, že ľudí táto téma zaujíma. 🙂

  8.   Elery dijo

    Regulárne výrazy pre dummies =), teraz mi je jasnejšie, mimochodom jedným zo spôsobov, ako mať výstup s farbou pre grep, je vytvorenie aliasu v .bashrc alias grep = 'grep –color = always', v prípade niekomu to funguje.

    pozdravy

    1.    hexborg dijo

      Pravdaže. To je ďalší spôsob, ako to urobiť. Ďakujem za príspevok. 🙂

  9.   KZKG ^ Gaara dijo

    O_O ... príspevok !!! O_O ...
    Ďakujem pekne za príspevok, chvíľu som na niečo také čakal lol, nechávam ho otvorený, aby som si ho pokojne prečítal doma s nulovými problémami s koncentráciou lol.

    Ďakujem za článok, naozaj áno 😀

    1.    hexborg dijo

      Vedel som, že by sa ti to páčilo. LOL !! Pravda je, že veľa vecí chýba, ale už mám na mysli druhú časť. 🙂

  10.   Eliecer Tates dijo

    Skvelý článok, keby som si ho prečítal iba včera, trieda, ktorú som dnes dal, by bola pre mojich študentov ešte ľahšia!

    1.    hexborg dijo

      LOL !! Škoda, že som meškal, ale som rád, že je to užitočné. 🙂

  11.   LeoToro dijo

    Konečne !!!, super dobrý príspevok .... Nakoniec som našiel niečo, čo jasne vysvetľuje regulárne výrazy ... ..

    1.    hexborg dijo

      Existuje veľa informácií, ale je ťažšie nájsť niečo, čo je ľahko pochopiteľné. Som rád, že som vyplnil túto medzeru. 🙂

      Zdravím.

  12.   Shakespeare Rhodos dijo

    Hej, potrebujem pomoc, musím vyhľadať v / var / logs s formátom: yymmdd a logy prichádzajú ako 130901.log -130901.log, musím vyhľadať všetky, ktoré sú od 1. septembra do 11. októbra „Jediné, čo sa mi podarilo urobiť, bolo odstrániť celý september, ale neviem, ako urobiť celý reťazec:

    napr .: 1309 [0-3] vráti protokoly medzi 1. až 30. septembrom, ale neviem, ako ich získať tiež v rovnakom reťazci od 1. do 11. októbra.

    1.    hexborg dijo

      Robiť to pomocou regulárnych výrazov je trochu komplikované. Napadá ma, že by niečo také mohlo fungovať:

      13(09[0-3]|10(0|1[01]))

      Je to rozšírený regulárny výraz. Nehovoríte, ktorý nástroj používate, takže vám nemôžem poskytnúť viac podrobností.

      Mimochodom, myslím si, že je to tak, namiesto použitia regulárnych výrazov je lepšie to urobiť pomocou find. Môžete vyskúšať niečo také:

      Nájsť. -novinka '01 sep '-a! -novinka '11 oct '-tlač

      Šťastie. Dúfam, že vám to môže pomôcť.

  13.   chipo dijo

    Ahoj! Najprv by som sa chcel poďakovať za tvoju prácu, pretože táto stránka patrí medzi moje „top 3“ najlepších linuxových stránok.
    Cvičil som a nevedel som, prečo mi nefunguje RegExp na telefónnom čísle a bolo to, že mi chýbalo «-E» (čo som si uvedomil vďaka tomuto príspevku).
    Chcel som sa vás opýtať, či nepoznáte kvalitný pdf alebo web, kde sú cvičenia na RegExp, aj keď pri troche fantázie si môžete vyskúšať ich vymyslenie sami.

    Zdravím ťa, Pablo.

  14.   cally dijo

    Veľmi dobré, iba som si to celé prečítal a áno, teraz potrebujem aspirín 🙂

  15.   Oskar dijo

    Najlepšie vysvetlenie regulárnych výrazov, aké som videl. Ďakujem autorovi za zdieľanie tejto práce.

    Pozdrav.

  16.   alexander dijo

    Veľmi sa mi páčilo veľmi dobré vysvetlenie