Vienas dalykas, kurį visada mėgau „Linux“ terminale, yra tai, ką galite pasiekti naudodami įprastus posakius. Nesvarbu, ar mums reikia rasti sudėtingą tekstą, ar jį pakeisti kažkuo kitu, reguliariųjų posakių naudojimas gali labai supaprastinti darbą. Pradėkime nuo pradžių:
Rodiklis
Kas yra taisyklingoji išraiška?
Reguliari išraiška yra specialių simbolių serija, leidžianti apibūdinti norimą rasti tekstą. Pavyzdžiui, jei norėtume ieškoti žodžio „linux“, pakaktų įdėti tą žodį į naudojamą programą. Pats žodis yra taisyklinga išraiška. Kol kas tai atrodo labai paprasta, bet ką daryti, jei norime surasti visus skaičius tam tikrame faile? Arba visos eilutės, kurios prasideda didžiąja raide? Tais atvejais nebegalite įdėti paprasto žodžio. Išeitis yra naudoti reguliariąją išraišką.
Reguliarios išraiškos ir failų šablonai.
Prieš pradėdamas reguliarius posakius, noriu išsiaiškinti įprastą nesusipratimą dėl reguliarių posakių. Reguliarioji išraiška nėra tai, ką mes dedame kaip parametrą tokiose komandose kaip rm, cp ir kt., Norėdami nurodyti įvairius kietajame diske esančius failus. Tai būtų failo modelis. Reguliarūs posakiai, nors ir panašūs tuo, kad juose naudojami kai kurie įprasti simboliai, skiriasi. Failo šablonas suaktyvinamas kietajame diske esančiuose failuose ir pateikia tuos, kurie visiškai atitinka šabloną, o įprasta išraiška suaktyvinama prieš tekstą ir pateikia eilutes, kuriose yra ieškomas tekstas. Pavyzdžiui, reguliarioji išraiška, atitinkanti modelį *.*
tai būtų kažkas panašaus ^.*\..*$
Reguliariųjų posakių tipai.
Ne visos programos naudoja tuos pačius įprastus posakius. Ne ką mažiau. Yra keletas daugiau ar mažiau standartinių reguliarių posakių tipų, tačiau yra programų, kurios šiek tiek keičia sintaksę, apima savo pačių plėtinius ar net naudoja visiškai skirtingus simbolius. Todėl, kai norite naudoti reguliarius posakius su programa, kurios nežinote gerai, pirmiausia reikia pažvelgti į programos vadovą arba dokumentaciją, kad pamatytumėte, kokie yra jos atpažįstami reguliarūs posakiai.
Pirma, yra du pagrindiniai reguliarių posakių tipai, kurie yra POSIX standarte, būtent tai naudoja „Linux“ įrankiai. Jie yra pagrindiniai ir išplėstiniai reguliarūs posakiai. Daugelis komandų, kurios veikia su įprastomis išraiškomis, pvz., „Grep“ arba „sed“, leidžia naudoti šiuos du tipus. Apie juos kalbėsiu toliau. Taip pat yra PERL stiliaus reguliaraus posakio, tada yra tokios programos kaip „vim“ arba „emacs“, kurios naudoja jų variantus. Atsižvelgiant į tai, ką mes norime daryti, gali būti tikslingiau naudoti vieną ar kitą.
Tikrųjų išraiškų testavimas.
Reguliariųjų posakių sintaksė visai nėra triviali. Kai turėsime parašyti sudėtingą reguliarią išraišką, būsime priešais iš pirmo žvilgsnio neįmanoma suprasti specialiųjų simbolių eilutę, todėl norint išmokti juos naudoti, būtina turėti būdą atlikti visus norimus ir matomus testus. rezultatus lengvai. Štai kodėl aš dabar ketinu pateikti kelias komandas, kuriomis mes galime atlikti bandymus ir eksperimentuoti viską, ko mums reikia, kol dominuoja taisyklingosios išraiškos.
Pirmoji yra „grep“ komanda. Tai komanda, kurią dažniausiai naudosime atlikdami paieškas. Sintaksė yra tokia:
grep [-E] 'REGEX' FICHERO
COMANDO | grep [-E] 'REGEX'
Aš rekomenduoju reguliarias išraiškas visada dėti vienomis kabutėmis, kad apvalkalas mūsų neišprotėtų. Pirmasis būdas yra faile rasti reguliarią išraišką. Antrasis leidžia filtruoti komandos išvestį naudojant įprastą išraišką. Pagal numatytuosius nustatymus grep naudoja pagrindinius reguliarius posakius. Parinktis -E skirta naudoti išplėstinius reguliarius posakius.
Apgaulė, kuri gali padėti suprasti, kaip veikia įprasti posakiai, yra tai, kad komandoje grep galima naudoti spalvas. Tokiu būdu bus paryškinta teksto dalis, atitinkanti įprastą išraišką, kurią naudojame. Norėdami suaktyvinti spalvą komandoje grep, tiesiog įsitikinkite, kad aplinkos kintamasis GREP_OPTIONS
turi vertę --color
, kurį galima padaryti naudojant šią komandą:
GREP_OPTIONS=--color
Mes galime jį įdėti į .bashrc, kad jis visada būtų suaktyvintas.
Kitas būdas naudoti įprastus posakius yra sed komandos naudojimas. Tai labiau tinka tekstui pakeisti, bet taip pat gali būti naudojama ieškant. Jo sintaksė būtų tokia:
sed -n[r] '/REGEX/p' FICHERO
COMANDO | sed -n[r] '/REGEX/p'
Komanda sed pagal numatytuosius nustatymus taip pat naudoja pagrindinius reguliarius posakius, išplėstinius reguliarius posakius galite naudoti su parinktimi -r.
Kita komanda, kurią taip pat noriu pavadinti, yra awk. Ši komanda gali būti naudojama daugeliui dalykų, nes ji leidžia rašyti scenarijus savo programavimo kalba. Jei norime surasti reguliarųjį išraišką faile arba komandos išvestyje, būdas jį naudoti būtų toks:
awk '/REGEX/' FICHERO
COMANDO | awk '/REGEX/'
Ši komanda visada naudoja išplėstinius reguliarius posakius.
Kad atliktume testus, mums taip pat reikės teksto, kuris bus pavyzdys ieškant jame. Galime naudoti šį 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.
Tai yra tekstas, kurį naudosiu likusio įrašo pavyzdžiams, todėl rekomenduoju nukopijuoti jį į failą, kad jis būtų patogus iš terminalo. Galite įdėti norimą vardą. Aš tai pavadinau regex.
Pradžios pamoka.
Dabar mes turime viską, ko reikia norint išbandyti įprastus posakius. Eime po truputį. Pateiksiu keletą paieškų su reguliariais posakiais pavyzdžių, kuriuose paaiškinsiu, kam skirtas kiekvienas veikėjas. Tai nėra labai geri pavyzdžiai, bet kadangi turėsiu labai ilgą postą, nenoriu jo dar labiau apsunkinti. Aš tiesiog nubrozdinsiu tai, ką galima padaryti reguliariais posakiais.
Paprasčiausia yra ieškoti konkretaus žodžio, pavyzdžiui, tarkime, kad norime rasti visas eilutes, kuriose yra žodis „Linux“. Tai yra lengviausia, nes mes turime tik parašyti:
grep 'Linux' regex
Ir mes galime pamatyti rezultatą:
Arka"Linux": https://wiki.archlinux.org/ Arch "Linux": 11-03-2002 Nuo "Linux" Rulezas.
Tai yra trys eilutės, kuriose yra žodis „Linux“, kuris, jei naudojome spalvų gudrybę, pasirodys paryškintas. Atkreipkite dėmesį, kad jis atpažįsta ieškomą žodį, net jei jis yra ilgesnio žodžio dalis, kaip „ArchLinux“. Tačiau jis neišryškina žodžio „linux“, kuris rodomas URL „https://wiki.archlinux.org/“. Taip yra todėl, kad jis ten rodomas su mažosiomis raidėmis „l“ ir mes jo ieškojome didžiosiomis raidėmis. „Grep“ komandoje yra galimybių tai padaryti, tačiau apie juos nekalbėsiu straipsnyje apie reguliarius posakius.
Atlikdami šį paprastą testą galime padaryti pirmąją išvadą:
- Į įprastą išraišką įdėtas įprastas simbolis sutampa su savimi.
Tai reiškia, kad jei įdėsite raidę „a“, ji ieškos raidės „a“. Atrodo logiška, tiesa? 🙂
Dabar tarkime, kad norime ieškoti žodžio „CentO“, po kurio eina bet kuris simbolis, bet tik vienas simbolis. Tam galime naudoti simbolį ".", Kuris yra pakaitos simbolis, atitinkantis bet kurį simbolį, bet tik vieną:
grep 'CentO.' regex
Rezultatas yra toks:
Centos: http://wiki.centos.org/ CentO: 14-05-2004 03:32:38
Tai reiškia, kad „CentOS“ jis apima „S“, nors vienu atveju jis yra didžiosios, o kitu atveju - mažosios. Jei toje vietoje atsirastų koks nors kitas veikėjas, jis taip pat jį įtrauktų. Mes jau turime antrąją taisyklę:
- Charakteris "." atitinka bet kurį simbolį.
Tai jau nėra taip trivialu, kaip atrodė, tačiau tuo negalime daug nuveikti. Eikime šiek tiek toliau. Tarkime, kad norime rasti eilutes, kuriose rodomi 2002 ir 2004 metai. Atrodo, kad tai dvi paieškos, tačiau jas galima atlikti vienu metu taip:
grep '200[24]' regex
Tai reiškia, kad mes norime rasti skaičių 200, po kurio eina 2 arba 4. Ir rezultatas yra toks:
„Arch Linux“: 11-03-2002 „Gentoo“: 31/03 /2002 CentO: 14-05-2004 03:32:38 Ubuntu: 20/10/2004
Kas mus priveda prie trečios taisyklės:
- Keli skliaustuose esantys simboliai atitinka bet kurį skliausteliuose esantį simbolį.
Skliausteliuose daugiau žaidžiama. juos taip pat galima naudoti norint išskirti simbolius. Pvz., Tarkime, kad norime rasti svetaines, kuriose yra simbolis ":", bet po kurio nėra "/". Komanda būtų tokia:
grep ':[^/]' regex
Paprasčiausia yra „^“ kaip pirmojo simbolio įtraukimas į skliaustą. Žemiau galite įdėti visus norimus simbolius. Šios paskutinės komandos rezultatas yra toks:
„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 03 2002 CentOs: 14-05-2004 03:32:38 „Debian“: 16 08 1993 Ubuntu: 20 / 10 / 2004
Dabar už platinimo pavadinimų yra paryškinti „:“, bet ne URL adresai, nes URL po jais yra „/“.
- „^“ Simbolio įtraukimas į skliaustą sutampa su bet kuriuo simboliu, išskyrus kitus skliausteliuose esančius simbolius.
Kitas dalykas, kurį galime padaryti, yra nurodyti simbolių diapazoną. Pvz., Jei norite ieškoti bet kurio skaičiaus, po kurio parašyta „-“, tai atrodytų taip:
grep '[0-9]-' regex
Tuo mes nurodome simbolį nuo 0 iki 9, o po to minuso ženklą. Pažiūrėkime rezultatą:
„Arch Linux“: 11-03-2002 m. CentOs: 14-05-2004 03: 32: 38
Skliausteliuose galite nurodyti kelis diapazonus, kad diapazonus net sumaišytumėte su atskirais simboliais.
- Skliausteliuose įdėjus du simbolius, atskirtus „-“, sutampa bet kuris diapazono simbolis.
Pažiūrėkime, ar galime pasirinkti pirmąją URL dalį. Tas, kuris sako „http“ arba „https“. Jie skiriasi tik galutiniais „s“, todėl darykime tai taip:
grep -E 'https?' regex
Klausiamasis ženklas naudojamas, kad kairėje esantis simbolis būtų neprivalomas. Bet dabar mes pridėjome -E parinktį prie komandos. Taip yra todėl, kad tardymas yra išplėstinių reguliarių posakių bruožas. Iki šiol naudojome pagrindinius reguliarius posakius, todėl mums nieko nereikėjo dėti. Pažiūrėkime 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/
Taigi mes jau turime naują taisyklę:
- Personažas, po kurio eina „?“ neatitinka šio simbolio arba jo nėra. Tai galioja tik išplėstiniams reguliariems posakiams.
Dabar rasime du visiškai skirtingus žodžius. Pažiūrėkime, kaip rasti eilutes, kuriose yra žodis „Debian“ ir „Ubuntu“.
grep -E 'Debian|Ubuntu' regex
Naudodami vertikalią juostą galime atskirti du ar daugiau skirtingų taisyklingų posakių ir ieškoti bet kurią iš jų atitinkančių eilučių:
debian: https://wiki.debian.org/ ubuntu: https://wiki.ubuntu.com/ debian: 16 / 08 / 1993 ubuntu: 20 / 10 / 2004
- „|“ Simbolis naudojama atskirti kelis įprastus posakius ir atitinka bet kurį iš jų. Jis taip pat būdingas išplėstiniams reguliariems posakiams.
Tęskime. Dabar mes ieškosime žodžio „Linux“, bet tik ten, kur jis nėra prilipęs prie kito žodžio kairėje. Mes galime tai padaryti taip:
grep '\
Svarbus simbolis čia yra „<“, tačiau jo reikia išvengti, prieš jį dedant „\“, kad grepas jį interpretuotų kaip ypatingą simbolį. Rezultatas yra toks:
Arka "Linux": 11-03-2002 Nuo "Linux" Rulezas.
Taip pat galite naudoti „\>“, kad ieškotumėte žodžių, kurie nėra visai šalia vienas kito. Pateikime pavyzdį. Pabandykime šią komandą:
grep 'http\>' regex
Jo sukurta produkcija yra tokia:
Centos: http: //wiki.centos.org/
Išėjo „Http“, bet ne „https“, nes „https“ „p“ dešinėje vis dar yra simbolis, kuris gali būti žodžio dalis.
- Simboliai „<“ ir „>“ atitinka atitinkamai žodžio pradžią ir pabaigą. Šių simbolių reikia išvengti, kad jie nebūtų interpretuojami kaip pažodiniai simboliai.
Mes einame su šiek tiek sudėtingesniais dalykais. „+“ Simbolis sutampa su kairėje esančiu simboliu, kartojamas bent kartą. Šis simbolis galimas tik su išplėstomis reguliariomis išraiškomis. Juo galime ieškoti, pavyzdžiui, kelių iš eilės einančių skaičių sekų, prasidedančių „:“.
grep -E ':[0-9]+' regex
Rezultatas:
CentOs: 14 05 2004 03: 32: 38
Skaičius 38 taip pat paryškinamas, nes jis taip pat prasideda „:“.
- „+“ Simbolis sutampa su kairėje esančiu simboliu, kartojamas bent kartą.
Taip pat galite valdyti pakartojimų skaičių naudodami „{“ ir „}“. Idėja yra uždėti petnešomis skaičių, nurodantį tikslų norimų pakartojimų skaičių. Taip pat galite pateikti diapazoną. Pažiūrėkime dviejų atvejų pavyzdžius.
Pirmiausia surasime visas keturių skaitmenų sekas:
grep '[0-9]\{4\}' regex
Atkreipkite dėmesį, kad garbanotųjų petnešų reikia išvengti, jei naudojame pagrindinius taisyklinguosius posakius, bet ne, jei naudojame išplėstinius. Pratęsus būtų taip:
grep -E '[0-9]{4}' regex
Ir rezultatas abiem atvejais būtų toks:
„Arch Linux“: 11-03-2002 „Gentoo“: 31/03 /2002 CentO: 14-05-2004 03:32:38 Debian: 16/08/1993 „Ubuntu“: 20/10 /2004
- Simboliai „{“ ir „}“ su skaičiumi tarp jų sutampa su ankstesniu simboliu, pakartotu nurodytą skaičių kartų.
Dabar kitas pavyzdys su petnešomis. Tarkime, kad norime rasti žodžius, kuriuose yra nuo 3 iki 6 mažųjų raidžių. Mes galėtume atlikti šiuos veiksmus:
grep '[a-z]\{3,6\}' regex
Rezultatas būtų toks:
- Lista de puslapiss wiki: ĮrchLinux: hTTPS: //wiki.Archlinux.org/ Gper daug: hTTPS: //wiki.gentoo.org/wiki/Main_Pamžius CENTOS: http: //wiki.Centos.org/ Debianas: hTTPS: //wiki.Debian.org/ ARBAsukilimas: hTTPS: //wiki.ubuntu.lt/ - Fpraleidote de Išleidimo: Įrch Linux: 11-03-2002 Gper daug: 31 03 2002 CENTOs: 14-05-2004 03:32:38 Debianas: 16 08 1993 Usukilimas: 20 10 2004 Dtai yra Linux Rulez.
Kuris, kaip matote, nėra panašus į tai, ko mes norėjome. Taip yra todėl, kad taisyklingoji išraiška randa raides kituose žodžiuose, kurie yra ilgesni. Išbandykime šią kitą versiją:
grep '\<[a-z]\{3,6\}\>' regex
Rezultatas:
- Puslapių sąrašas wiki: ArchLinux: hTTPS: //wiki.archlinux.org/ „Gentoo“: hTTPS: //wiki.gentoo.org/wiki/ Pagrindinis_Pasalis CentOS: http: //wiki.Centos.org/ Debian: hTTPS: //wiki.Debian.org/ „Ubuntu“: hTTPS: //wiki.ubuntu.lt/
Tai jau atrodo labiau tai, ko mes norėjome. Tai, ką mes padarėme, reikalauja, kad žodis prasidėtų prieš pirmąją raidę ir baigtųsi tik po paskutinės.
- Simboliai „{“ ir „}“, tarp kurių yra du skaičiai, atskirti kableliu, sutampa su ankstesniu simboliu, kuris kartojo skaičių, nurodytą dviem skaičiais.
Dabar pažvelkime į simbolį, kuris yra „+“ pagrindas. Tai „*“ ir jo veikimas yra labai panašus tik tuo, kad sutampa su bet kokiu simbolių skaičiumi, įskaitant nulį. Tai reiškia, kad jis daro tą patį kaip „+“, tačiau nereikalauja, kad kairėje esantis simbolis būtų rodomas tekste. Pavyzdžiui, pabandykime ieškoti tų adresų, kurie prasideda wiki ir baigiasi org:
grep 'wiki.*org' regex
Pažiūrėkime 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.
Dabar paskutinis veikėjas, kurį pamatysime. Simbolis „\“ naudojamas norint išvengti simbolio iš dešinės, kad jis prarastų savo ypatingą reikšmę. Pvz .: Tarkime, kad mes norime surasti linijas, kurios baigiasi tašku. Pirmas dalykas, kuris mums gali kilti, gali būti toks:
grep '.$' regex
Rezultatas nėra tai, ko mes ieškome:
- Wiki puslapių sąrašas: „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/ - Išleidimo datos: „Arch Linux“: 11-03-2002 „Gentoo“: 31 03 2002 CentOs: 14-05-2004 03:32:38 Debianas: 16 08 1993 „Ubuntu“: 20 10 2004 Iš „Linux Rulez“.
Taip yra todėl, kad „. atitinka bet ką, todėl reguliarusis posakis atitinka paskutinį kiekvienos eilutės simbolį, kad ir koks jis būtų. Sprendimas yra toks:
grep '\.$' regex
Dabar rezultatas yra tai, ko mes norime:
Iš „Linux Rulez“.
Game Over
Nors reguliarių posakių tema yra tokia sudėtinga, kad duočiau straipsnių seriją, manau, kad aš jums jau suteikiau pakankamai skausmo. Jei pavyko atvykti, sveikiname. O jei visa tai perskaitėte per vieną posėdį, vartokite aspiriną ar pan., Nes tai negali būti gerai.
Kol kas viskas. Jei jums patinka šis straipsnis, gal galiu parašyti kitą. Tuo tarpu rekomenduoju išbandyti visus terminalo įprastus posakius, kad aiškiai matytumėte, kaip jie veikia. Ir atminkite: HTML analizuoti naudojant įprastas išraiškas gali tik Chuckas Norrisas.
28 komentarai, palikite savo
Koks būtų mūsų gyvenimas be regex?
Straipsnis yra labai naudingas, bet aš jį po truputį skaitysiu. Labai ačiū.
Ačiū už komentarą. Aš vis dar netikiu, kad mano straipsnis pasirodė. 🙂 Išleista su klaida, bet tikiuosi, kad tai bus naudinga. 🙂
Ačiū youssssssss! ..
Jau seniai turėjau šiek tiek mokytis apie įprastus posakius .. .. dėkoju už mokymą .. ir nuoseklų vadovą, kad išmoktum kiekvieną iš jų ..
Labai gerai! .. .. Aš gausiu to aspirino .. ee
Jokiu problemu. Drąsa ir reguliarūs posakiai negali būti su tavimi. 🙂
Fantastiškas įrašas! Puikus darbas. Įdomu, kiek valandų tau užtruko 😀
DAUG JUOKO!! Kyla klausimas: kiek valandų man būtų reikėję, jei būčiau pasakęs viską, ką ketinau pasakyti? Begalinis !! 🙂
vieno dalyko nezinau, geras straipsnis!
Ačiū. Malonu tuo pasidalinti su jumis.
puikus paaiškinimas. sveikinu! tikrai naudinga!
Džiaugiuosi, kad jums tai buvo naudinga. Taigi malonu rašyti.
Tai turėtų būti kažkur ypatinga. Kaip ir „Panašūs“, bet turi labai specifinį naudingumą. Gana naudinga, nors norėčiau, kad tai būtų taikoma Vimui.
Tai klausimas, kaip užduoti sau klausimą. Turiu omenyje dar keletą straipsnių apie reguliarias išraiškas. Aš galėčiau kalbėti apie vim juose. Jis turi tam tikrų skirtumų nuo to, ką aš paaiškinau šiame straipsnyje. Tai reikalas susitvarkyti. 🙂
Gerai!
Jūsų straipsnis labai geras, įdomus. Neseniai (dabar) savo svetainėje paskelbiau įrašą, kurį ruošiausi keletą dienų ir kuriame surinkau metafaktų sąrašą, skirtą reguliarioms išraiškoms ir keletą pavyzdžių. Buvo teisinga įeiti į „DesdeLinux“ ir pamatyti įrašą ta pačia tema!
Jei tai kokia paguoda, manoji yra DAUG PUSIAU Y
Be abejo, regex yra vienas iš naudingiausių dalykų, aš paprastai juos naudoju norėdamas apkarpyti komandų išvestį ir išsaugoti mane dominančią dalį, tada, pavyzdžiui, bendrauju su ja „bash“ scenarijuje. Aš taip pat daug jų naudojau universitete, ir jie yra gyvybiškai svarbūs rengiant kompiliatorius (apibrėžiant leksikografinius ir parserius). Trumpai tariant, visas pasaulis.
Sveikinimai ir labai labai geras darbas.
Labai ačiū.
Man patiko ir tavo straipsnis. Tai glaustesnė nei mano. Tai gali būti greita nuoroda. Tai sutapimas, kad mes juos parašėme tuo pačiu metu. Matote, kad žmonės domisi šia tema. 🙂
Reguliarūs manekenių posakiai =), dabar man aiškiau, beje, vienas iš būdų turėti išvestį su spalva „grep“ yra sukurti slapyvardį .bashrc pseudonime grep = 'grep –color = always' tai kažkam tinka.
saludos
Tiesa. Tai dar vienas būdas tai padaryti. Dėkojame už indėlį. 🙂
O_O ... gabalas !!! O_O ...
Labai ačiū už įrašą, kurį laiką laukiau kažko panašaus, lol, palieku atvirą, kad galėčiau ramiai perskaityti namuose be jokio vargo sutelkti lol.
Ačiū už straipsnį, tikrai darau 😀
Žinojau, kad tau patiks. DAUG JUOKO!! Tiesa ta, kad trūksta daugelio dalykų, bet aš jau galvoju apie antrąją dalį. 🙂
Puikus straipsnis, jei tik būčiau vakar jį perskaičiusi, šiandien duota klasė mano mokiniams būtų buvusi dar lengvesnė!
DAUG JUOKO!! Blogai, kad pavėlavau, bet džiaugiuosi, kad tai naudinga. 🙂
Pagaliau !!!, labai geras įrašas .... Pagaliau radau tai, kas aiškiai paaiškina įprastus posakius ...
Ten yra daug informacijos, tačiau sunkiau rasti tai, kas lengvai suprantama. Džiaugiuosi, kad užpildžiau tą spragą. 🙂
Sveikinimai.
Ei, man reikia pagalbos, turiu atlikti paiešką aplanke / var / logs formatu: yymmdd, o žurnalai yra tokie kaip 130901.log -130901.log, turiu ieškoti visuose, kurie yra nuo rugsėjo 1 d. Iki spalio 11 d. Vienintelis dalykas, kurį pavyko padaryti, buvo pašalinti visą rugsėjį, bet aš nežinau, kaip atlikti visą grandinę:
pvz .: 1309 [0-3] grąžina man žurnalus nuo rugsėjo 1 iki 30, bet aš nežinau, kaip patekti į tą pačią grandinę nuo spalio 1 iki 11 dienos.
Tai padaryti naudojant įprastus posakius yra šiek tiek sudėtinga. Man atrodo, kad kažkas panašaus gali veikti:
13(09[0-3]|10(0|1[01]))
Tai išplėstinė taisyklingoji išraiška. Jūs nesakote, kurį įrankį naudojate, todėl negaliu pateikti daugiau informacijos.
Bet kokiu atveju, manau, kad taip yra, užuot vartojus reguliarius posakius, geriau tai daryti su radimu. Galite išbandyti kažką tokio:
rasti. -newermt '01 sep '-a! naujausias „11 okt.“ atspaudas
Sėkmė. Tikiuosi, kad tai gali jums padėti.
Sveiki! Pirmiausia norėjau padėkoti už jūsų darbą, nes šis puslapis yra mano geriausių „Linux“ svetainių „top 3“.
Aš buvau praktikuojantis ir nežinojau, kodėl „RegExp“ telefono numeriu man netiko ir būtent todėl man trūko „-E“ (kurį supratau šio įrašo dėka).
Norėjau jūsų paklausti, ar nežinote gero pdf failo ar svetainės, kurioje yra „RegExp“ pratimų, nors turėdami šiek tiek fantazijos galite praktiškai patys juos sugalvoti.
Sveikinimai, Pablo.
Labai gerai, aš ką tik perskaičiau, ir taip, dabar man reikia aspirino 🙂
Geriausias reguliarių posakių paaiškinimas. Dėkoju autorei už pasidalinimą šiuo darbu.
Pasisveikinimas.
Man labai patiko labai geras paaiškinimas