S terminalom: Korištenje regularnih izraza

Jedna od stvari koju sam oduvijek volio na Linux terminalu je ono što možete postići koristeći regularne izraze. Bez obzira trebamo li pronaći komplicirani tekst ili ga zamijeniti nečim drugim, upotreba regularnih izraza može uvelike pojednostaviti posao. Počnimo od početka:

UPOZORENJE: Ovaj post muči dupe. Stalno čitanje ovog posta može prouzrokovati gubitak svijesti. Napravite pauze između njih ili se posavjetujte sa svojim liječnikom ili farmaceutom prije nego što pročitate cijeli članak.

Šta je regularni izraz?

Regularni izraz je niz posebnih znakova koji nam omogućavaju da opišemo tekst koji želimo pronaći. Na primjer, ako bismo željeli tražiti riječ "linux", bilo bi dovoljno da tu riječ stavimo u program koji koristimo. Sama riječ je redovan izraz. Zasad se čini vrlo jednostavno, ali što ako želimo pronaći sve brojeve u određenoj datoteci? Ili svi redovi koji počinju velikim slovom? U tim slučajevima više ne možete staviti jednostavnu riječ. Rješenje je korištenje regularnog izraza.

Regularni izrazi nasuprot obrascima datoteka.

Prije nego što uđem u regularne izraze, želim razjasniti uobičajeni nesporazum oko regularnih izraza. Regularni izraz nije ono što stavljamo kao parametar u naredbe poput rm, cp itd. Za upućivanje na razne datoteke na tvrdom disku. To bi bio obrazac datoteke. Regularni izrazi, iako slični po tome što koriste neke uobičajene znakove, različiti su. Uzorak datoteke aktivira se prema datotekama na tvrdom disku i vraća one koji se u potpunosti podudaraju sa uzorkom, dok se regularni izraz aktivira prema tekstu i vraća linije koje sadrže traženi tekst. Na primjer, regularni izraz koji odgovara uzorku *.* bilo bi nešto poput ^.*\..*$

Vrste regularnih izraza.

Ne koriste svi programi iste regularne izraze. Ne mnogo manje. Postoji nekoliko vrsta više ili manje standardnih regularnih izraza, ali postoje programi koji lagano mijenjaju sintaksu, uključuju vlastita proširenja ili čak koriste potpuno različite znakove. Stoga, kada želite koristiti regularne izraze s programom koji ne poznajete dobro, prvo što trebate učiniti je pogledati priručnik ili dokumentaciju programa da biste vidjeli kakvi su regularni izrazi koje prepoznaje.

Prvo, postoje dvije glavne vrste regularnih izraza koje sadrži POSIX standard, a to je ono što Linux alati koriste. Oni su osnovni i prošireni regularni izrazi. Mnoge naredbe koje rade s regularnim izrazima, poput grep ili sed, omogućuju vam korištenje ove dvije vrste. O njima ću govoriti u nastavku. Tu su i regularni izrazi u PERL stilu, a zatim postoje programi poput vim ili emacs koji koriste njihove varijante. Ovisno o tome što želimo učiniti, možda je prikladnije koristiti jedno ili drugo.

Testiranje regularnih izraza.

Sintaksa regularnih izraza uopće nije trivijalna. Kad moramo napisati komplicirani regularni izraz, naći ćemo se pred nizom specijalnih znakova koje je na prvi pogled nemoguće razumjeti, pa je za naučiti kako ih koristiti neophodno imati način da obavimo sve testove koje želimo i da lako vidimo rezultate. Zbog toga ću sada staviti nekoliko naredbi pomoću kojih možemo raditi testove i eksperimentirati sve što nam treba dok ne dominiramo regularnim izrazima.

Prva je grep naredba. Ovo je naredba koju ćemo najčešće koristiti za pretragu. Sintaksa je sljedeća:

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

Preporučujem uvijek stavljanje regularnih izraza u pojedinačne navodnike, tako da ljuska ne dođe do toga. Prvi način je pronaći regularni izraz u datoteci. Drugi omogućava filtriranje izlaza naredbe kroz regularni izraz. Po defaultu grep koristi osnovne regularne izraze. Opcija -E je za upotrebu proširenih regularnih izraza.

Trik koji nam može pomoći da vidimo kako funkcioniraju regularni izrazi kako bi se omogućila upotreba boje u naredbi grep. Na taj će način biti istaknut dio teksta koji odgovara regularnom izrazu koji koristimo. Da biste aktivirali boju u naredbi grep, samo provjerite je li varijabla okoline GREP_OPTIONS sadrže u vrijednosti --color, što se može učiniti ovom naredbom:

GREP_OPTIONS=--color

Možemo ga staviti u .bashrc da ga uvijek aktiviramo.

Drugi način korištenja regularnih izraza je upotrebom naredbe sed. Ovo je prikladnije za zamjenu teksta, ali se može koristiti i za pretraživanje. Sintaksa za to bi bila sljedeća:

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

Naredba sed također koristi osnovne regularne izraze prema zadanim postavkama, a možete koristiti proširene regularne izraze s opcijom -r.

Još jedna naredba koju također želim imenovati je awk. Ova se naredba može koristiti za mnoge stvari, jer vam omogućava pisanje skripti na vašem vlastitom programskom jeziku. Ako ono što želimo je traženje regularnog izraza u datoteci ili u izlazu naredbe, način na koji bismo ga koristili bio bi sljedeći:

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

Ova naredba uvijek koristi proširene regularne izraze.

Za naše testove trebat će nam i tekst koji služi kao primjer za pretraživanje u njemu. Možemo koristiti sljedeći tekst:

- 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.

Ovo je tekst koji ću koristiti za primjere ostatka posta, pa preporučujem da ga kopirate u datoteku kako bi vam bio pri ruci s terminala. Možete staviti ime koje želite. Nazvao sam to regularnim izrazom.

Početna lekcija.

Sada imamo sve što je potrebno za započinjanje testiranja regularnih izraza. Idemo malo po malo. Navest ću nekoliko primjera pretraživanja s regularnim izrazima u kojima ću objasniti čemu služi svaki lik. Nisu baš dobri primjeri, ali s obzirom na to da ću imati vrlo dugačak post, ne želim ga više komplicirati. I samo ću ogrebati površinu onoga što se može uraditi regularnim izrazima.

Najjednostavnije od svega je traženje određene riječi, na primjer, pretpostavimo da želimo pronaći sve redove koji sadrže riječ "Linux". Ovo je najlakše, jer moramo samo napisati:

grep 'Linux' regex

I možemo vidjeti rezultat:

svodLinux: https://wiki.archlinux.org/ Arch Linux: 11-03-2002 od Linux Rulez.

Ovo su tri retka koji sadrže riječ "Linux" koja će, ako smo koristili trik u boji, biti istaknuta. Imajte na umu da prepoznaje riječ koju tražimo čak i ako je dio duže riječi kao u "ArchLinux". Međutim, ne ističe riječ "linux" koja se pojavljuje u URL-u "https://wiki.archlinux.org/". To je zato što se tamo pojavljuje s malim slovom "l" i tražili smo ga s velikim slovom. Naredba grep ima opcije za ovo, ali neću o njima govoriti u članku o regularnim izrazima.

Ovim jednostavnim testom možemo izvući prvi zaključak:

  • Normalni znak stavljen u regularni izraz sam se poklapa.

Što će reći da ako stavite slovo "a", tražit će slovo "a". Izgleda logično, zar ne? 🙂

Sada pretpostavimo da želimo tražiti riječ "CentO" iza koje slijedi bilo koji znak, ali samo jedan znak. Za ovo možemo koristiti znak ".", Koji je zamjenski znak koji odgovara bilo kojem znaku, ali samo jednom:

grep 'CentO.' regex

Rezultat je:

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

Što znači da uključuje "S" u "CentOS", iako je u jednom slučaju veliko, a u drugom malom. Ako se bilo koji drugi lik pojavio na tom mjestu, on bi ga također uključio. Već imamo drugo pravilo:

  • Lik "." odgovara bilo kojem liku.

Nije više tako trivijalno kako se činilo, ali s ovim ne možemo puno učiniti. Idemo malo dalje. Pretpostavimo da želimo pronaći redove u kojima se pojavljuju 2002. i 2004. Izgledaju kao dva pretraživanja, ali mogu se izvršiti odjednom ovako:

grep '200[24]' regex

Što znači da želimo pronaći broj 200 iza kojeg slijede 2 ili 4. A rezultat je sljedeći:

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

Što nas dovodi do trećeg pravila:

  • Višestruki znakovi zatvoreni u zagrade podudaraju se s bilo kojim od znakova u zagradama.

Zagrade daju više igre. mogu se koristiti i za izuzeće znakova. Na primjer, pretpostavimo da želimo pronaći stranice na kojima se pojavljuje znak ":", ali ih ne prati "/". Naredba bi bila sljedeća:

grep ':[^/]' regex

Jednostavno je pitanje stavljanja "^" kao prvog znaka u zagradu. Sve željene znakove možete staviti ispod. Rezultat ove posljednje naredbe je sljedeći:

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/
Arch Linux: 11-03-2002 Gentoo: 31. CentOs: 14-05-2004 03:32:38 Debian: 16 Ubuntu: 20/10/2004

Sada su označena ":" iza imena distroa, ali ne i ona u URL-ovima jer URL-ovi imaju "/" iza sebe.

  • Stavljanje znaka "^" na početak zagrade podudara se s bilo kojim znakom osim s ostalim znakovima u zagradi.

Druga stvar koju možemo učiniti je odrediti niz znakova. Na primjer, ako tražite bilo koji broj iza kojeg slijedi "-", to bi izgledalo ovako:

grep '[0-9]-' regex

Ovim određujemo znak između 0 i 9, a zatim znak minus. Pogledajmo rezultat:

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

Možete odrediti više raspona unutar zagrada da biste čak i miješali raspone s pojedinačnim znakovima.

  • Postavljanje dva znaka odvojena znakom "-" unutar zagrada podudara se sa bilo kojim znakom unutar raspona.

Pogledajmo sada možemo li odabrati prvi dio URL-ova. Onaj koji kaže "http" ili "https". Razlikuju se samo u posljednjim s, pa učinimo to na sljedeći način:

grep -E 'https?' regex

Znak pitanja koristi se da znak s lijeve strane postane neobavezan. Ali sada smo naredbi dodali opciju -E. To je zato što je ispitivanje svojstvo proširenih regularnih izraza. Do sada smo koristili osnovne regularne izraze, tako da nije trebalo ništa stavljati. Pogledajmo rezultat:

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/

Dakle, već imamo novo pravilo:

  • Lik iza kojeg slijedi "?" odgovara tom liku ili nijednom. Ovo vrijedi samo za proširene regularne izraze.

Sada ćemo potražiti dvije potpuno različite riječi. Pogledajmo kako pronaći redove koji sadrže i riječ "Debian" i "Ubuntu".

grep -E 'Debian|Ubuntu' regex

Pomoću okomite trake možemo odvojiti dva ili više različitih regularnih izraza i tražiti linije koje odgovaraju bilo kojem od njih:

Debian: https://wiki.debian.org/
Ubuntu: https://wiki.ubuntu.com/
Debian: 16 / 08 / 1993
Ubuntu: 20 / 10 / 2004
  • Znak "|" služi za odvajanje više regularnih izraza i podudara se s bilo kojim od njih. Također je specifičan za proširene regularne izraze.

Nastavimo. Sada ćemo tražiti riječ "Linux", ali samo tamo gdje nije zalijepljena za drugu riječ s lijeve strane. Možemo to učiniti ovako:

grep '\

Ovdje je važan znak "<", ali treba ga izbjeći stavljanjem "\" ispred njega, tako da će ga grep protumačiti kao poseban znak. Rezultat je sljedeći:

svod Linux: 11-03-2002 od Linux Rulez.

Također možete koristiti "\>" za traženje riječi koje nisu u neposrednoj blizini. Idemo sa primjerom. Pokušajmo sa ovom naredbom:

grep 'http\>' regex

Rezultat je sljedeći:

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

Izašao je "Http", ali ne i "https", jer u "https" još uvijek postoji znak desno od "p" koji može biti dio riječi.

  • Znakovi "<" i ">" odgovaraju početku i kraju riječi. Ovi se znakovi moraju izbjeći kako se ne bi tumačili kao doslovni znakovi.

Idemo sa stvarima malo složenijim. Znak "+" odgovara liku s lijeve strane, ponovljen barem jednom. Ovaj znak je dostupan samo s proširenim regularnim izrazima. Pomoću nje možemo pretraživati, na primjer, sekvence nekoliko uzastopnih brojeva koji počinju sa ":".

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

Rezultat:

CentOs: 14. 05: 32: 38

Broj 38 je takođe istaknut jer takođe počinje sa ":".

  • Znak "+" odgovara liku s lijeve strane, ponavlja se barem jednom.

Također možete kontrolirati broj ponavljanja pomoću "{" i "}". Ideja je staviti u zagrade broj koji pokazuje tačan broj ponavljanja koja želimo. Takođe možete staviti opseg. Pogledajmo primjere dva slučaja.

Prvo ćemo pronaći sve četveroznamenkaste sekvence koje postoje:

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

Imajte na umu da se kovrčave zagrade moraju izbjeći ako koristimo osnovne regularne izraze, ali ne i ako koristimo proširene. Sa produženim bi bilo ovako:

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

A rezultat u oba slučaja bio bi sljedeći:

ArchLinux: 11-03-2002
Gentoo: 31. /2002
CentO: 14-05-2004 03:32:38
Debian: 16/08/1993
Ubuntu: 20/10 /2004
  • Znakovi "{" i "}" s brojem između njih podudaraju se s prethodnim znakom ponovljenim navedenim brojem puta.

Sada drugi primjer sa zagradama. Pretpostavimo da želimo pronaći riječi koje imaju između 3 i 6 malih slova. Mogli bismo učiniti sljedeće:

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

A rezultat bi bio sljedeći:

- THEista de stranicas Wiki: TOrchLinux: HTTPS: //Wiki.archlinux.org/ Gonda: HTTPS: //Wiki.gentoo.org/Wiki/Main_Pstarost
CentOS: http: //Wiki.centi.org/ Debian: HTTPS: //Wiki.debian.org/ ILISlijepa ulica: HTTPS: //Wiki.ubuntu.com/ - Fnedostaješ de lansiranje: TOrch Linux: 11-03-2002 Gonda: 31. CentOs: 14-05-2004 03:32:38
Debian: 16 USlijepa ulica: 20 DTO JE Linux Rulez.

Što, kao što vidite, ne liči mnogo na ono što smo željeli. To je zato što regularni izraz pronalazi slova u drugim riječima koje su duže. Pokušajmo sa ovom drugom verzijom:

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

Rezultat:

- Spisak stranica Wiki: ArchLinux: HTTPS: //Wiki.archlinux.org/ Gentoo: HTTPS: //Wiki.gentoo.org/Wiki/ Main_Page CentOS: http: //Wiki.centi.org/ Debian: HTTPS: //Wiki.debian.org/ Ubuntu: HTTPS: //Wiki.ubuntu.com/

Ovo već više liči na ono što smo željeli. Ono što smo učinili je da zahtijeva da riječ započne neposredno prije prvog slova i završi neposredno nakon posljednjeg.

  • Znakovi "{" i "}" s dva broja između njih odvojena zarezom podudaraju se s prethodnim znakom, koliko puta su dva broja označena.

Pogledajmo sada lik koji je primerak "+". To je "*" i njegov rad je vrlo sličan samo što se podudara s bilo kojim brojem znakova, uključujući nulu. Odnosno, radi isto što i "+", ali ne zahtijeva da se znak s lijeve strane pojavi u tekstu. Na primjer, pokušajmo potražiti one adrese koje počinju na wikiju, a završavaju na org:

grep 'wiki.*org' regex

Pogledajmo rezultat:

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

Perfecto.

Sada posljednji lik koji ćemo vidjeti. Znak "\" koristi se za bijeg od znaka s njegove desne strane, tako da on gubi svoje posebno značenje. Na primjer: Pretpostavimo da želimo locirati linije koje se završavaju točkom. Prvo što bi nam moglo pasti na pamet moglo bi biti ovo:

grep '.$' regex

Rezultat nije ono što tražimo:

- Lista wiki stranica:
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/
- Datumi izdanja: Arch Linux: 11-03-2002
Gentoo: 312
CentOs: 14-05-2004 03:32:38
Debian: 163
Ubuntu: 204
Desde Linux Rulez.

To je zato što "." podudara se s bilo čim, tako da se regularni izraz podudara sa zadnjim znakom svake linije, bez obzira na to koji je. Rješenje je sljedeće:

grep '\.$' regex

Sada je rezultat ono što želimo:

Desde Linux Rulez.

Igra je gotova

Iako je tema regularnih izraza toliko složena da bih je dao za niz članaka, mislim da sam vam već zadao dovoljno boli. Ako ste uspjeli stići, čestitamo. A ako ste sve ovo pročitali u jednom zasjedanju, uzmite aspirin ili nešto slično, jer to ne može biti dobro.

Za sada je to sve. Ako vam se sviđa ovaj članak, možda napišem drugi. U međuvremenu, preporučujem vam da isprobate sve regularne izraze u terminalu kako biste jasno vidjeli kako funkcioniraju. I upamtite: samo Chuck Norris može raščlaniti HTML pomoću regularnih izraza.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   Ezequiel rekao je

    Kakav bi bio naš život bez regularnog izraza?
    Članak je vrlo koristan, ali pročitat ću ga malo po malo. Hvala puno.

    1.    hexborg rekao je

      Hvala vam na komentaru. Još uvijek ne vjerujem da je izašao moj članak. Come Izašlo je s pogreškom, ali nadam se da je korisno. 🙂

  2.   Scalibur rekao je

    Hvala vamssssssss! ..

    Prošlo je dosta vremena otkako sam morao malo da učim o regularnim izrazima .. ..Hvala vam što podučavate .. i detaljni vodič za učenje svakog od njih ..

    Vrlo dobro! .. .. Idem po onaj aspirin .. ee

    1.    hexborg rekao je

      Nema na čemu. Hrabrost i da regularni izrazi ne mogu s vama. 🙂

  3.   tanrax rekao je

    Fantastičan post! Sjajan posao. Pitam se koliko vam je sati trebalo 😀

    1.    hexborg rekao je

      LOL!! Pitanje je: Koliko bi mi sati trebalo da sam rekao sve što namjeravam reći? Beskonačno !! 🙂

  4.   Tammuz rekao je

    jedno nisam znao, dobar članak!

    1.    hexborg rekao je

      Hvala ti. Zadovoljstvo je podijeliti s vama.

  5.   helena_ryuu rekao je

    sjajno objašnjenje. čestitam! zaista korisno!

    1.    hexborg rekao je

      Drago mi je što vam je bilo korisno. Tako da je zadovoljstvo pisati

  6.   anti rekao je

    Ovo bi trebalo ići negdje posebno. Sviđa vam se Istaknuto, ali imaju vrlo specifičnu korisnost. Sasvim korisno, mada bih volio da se primijeni na Vima.

    1.    hexborg rekao je

      To je pitanje postavljanja samog sebe. Imam na umu još nekoliko članaka o regularnim izrazima. I mogao bih razgovarati o vim u njima. Ima neke razlike od onoga što sam objasnio u ovom članku. Stvar je u tome da se nastavi s tim. 🙂

  7.   fernando rekao je

    Dobro!

    Vaš članak je jako dobar, znatiželjan je, nedavno sam (upravo sada) objavio na svojoj web stranici unos koji sam pripremao nekoliko dana gdje sam prikupio listu metakaraktera za regularne izraze i neke primjere. I bilo je pošteno ući DesdeLinux i pogledajte unos na istu temu!

    Ako je neka utjeha, moja je PUNO PUSIJA US

    Svakako su regularni izrazi jedna od najkorisnijih stvari, obično ih koristim za obrezivanje izlaza naredbi i zadržavanje dijela koji me zanima, a zatim, na primjer, u interakciji s njim u bash skripti. Takođe sam ih puno koristio na univerzitetu, a oni su od vitalne važnosti u izradi kompajlera (u definiciji leksikografskih i raščlanjivača). Ukratko, cijeli svijet.

    Pozdrav i jako dobar posao.

    1.    hexborg rekao je

      Hvala lijepo.

      Svidio mi se i vaš članak. Sažetiji je od mog. Može poslužiti kao brza referenca. Slučajnost je da smo ih napisali istovremeno. Možete vidjeti da ljude zanima tema. 🙂

  8.   Elery rekao je

    Regularni izrazi za lutke =), sada mi je jasnije, usput rečeno, jedan od načina da se dobije izlaz sa bojom za grep je stvaranje zamjenskog imena u .bashrc alias grep = 'grep –color = always', u slučaju da nekome odgovara .

    Saludos

    1.    hexborg rekao je

      Tačno. To je još jedan način za to. Hvala na unosu. 🙂

  9.   KZKG ^ Gaara rekao je

    O_O… prilog !!! O_O ...
    Puno vam hvala na postu, neko vrijeme sam čekao tako nešto, ha, ostavljam ga otvorenim da ga mirno čitam kod kuće, bez ikakve gnjavaže da se koncentrišem, hahaha.

    Hvala na članku, stvarno znam do

    1.    hexborg rekao je

      Znao sam da će ti se svidjeti. LOL!! Istina je da mnoge stvari nedostaju, ali već imam na umu drugi dio. 🙂

  10.   Eliecer Tates rekao je

    Odličan članak, da sam ga pročitao jučer, čas koji bih održao danas bio bi još lakši za moje učenike!

    1.    hexborg rekao je

      LOL!! Šteta što sam zakasnio, ali drago mi je što je korisno. 🙂

  11.   LeoToro rekao je

    Napokon !!!, super dobar post .... Napokon sam pronašao nešto što jasno objašnjava regularne izraze ... ..

    1.    hexborg rekao je

      Mnogo je informacija vani, ali teže je pronaći nešto što je lako razumjeti. Drago mi je što sam popunio tu prazninu. 🙂

      Pozdrav.

  12.   Shakespeare Rhodes rekao je

    Hej, treba mi pomoć, moram pretražiti / var / logs u formatu: yymmdd, a dnevnici su ovakvi 130901.log -130901.log, moram potražiti sve one koji su između 1. septembra i 11. oktobra, Jedino što sam uspio je ukloniti cijeli rujan, ali ne znam kako da napravim cijeli lanac:

    ex: 1309 [0-3] vraća mi zapisnike između 1. septembra i 30. septembra, ali ne znam kako da uđem u isti lanac od 1. do 11. oktobra.

    1.    hexborg rekao je

      Učiniti to pomoću regularnih izraza pomalo je složeno. Pada mi na pamet da bi ovako nešto moglo uspjeti:

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

      To je prošireni regularni izraz. Ne kažete koji alat koristite, pa vam ne mogu dati više detalja.

      U svakom slučaju, mislim da je to slučaj, umjesto da koristim regularne izraze, bolje je to učiniti s findom. Možete probati nešto poput ovog:

      pronađi. -newermt '01 sep '-a! -newermt '11. oktobar '-tisak

      Sreća. Nadam se da vam ovo može pomoći.

  13.   chipo rekao je

    Pozdrav! Prije svega, želio sam da vam se zahvalim na vašem radu jer se ova stranica nalazi u mom "top 3" najboljih Linux stranica.
    Vježbala sam i nisam znala zašto mi RegExp na telefonskom broju nije radio i bilo je to što mi je nedostajalo "-E" (što sam shvatio zahvaljujući ovom postu).
    Htio sam vas pitati ako ne znate dobar pdf ili web mjesto na kojem postoje vježbe na RegExp-u, iako uz malo mašte možete vježbati da ih sami izmišljate.

    Pozdrav, Pablo.

  14.   cly rekao je

    Vrlo dobro, upravo sam pročitao sve i da, sad mi treba aspirin 🙂

  15.   Oscar rekao je

    Najbolje objašnjenje koje sam vidio za regularne izraze. Zahvaljujem se autoru što je podijelio ovo djelo.

    A pozdrav.

  16.   alexander rekao je

    Zaista mi se svidjelo vrlo dobro objašnjenje