grep

Eilių radimas teksto failuose naudojant grep su reguliariąja išraiška

Eilių radimas teksto failuose naudojant grep su reguliariąja išraiška
„grep“ yra vienas populiariausių įrankių ieškant ir surandant eilutes tekstiniame faile. Pavadinimas „grep“ kilęs iš komandos, kuri jau pasenusi „Unix ed line“ redaktoriaus įrankyje - „ed“ komanda, skirta ieškoti visame pasaulyje per failą a Įprasta išraiška ir tada spausdinimas tos eilutės buvo g / re / p, kur re buvo įprastas posakis, kurį naudosite. Galų gale komanda grep buvo parašyta atlikti šią paiešką faile, kai nenaudojate ed.

Šiame straipsnyje mes parodysime, kaip paleisti išankstinę eilučių paiešką naudojant „Grep“ su reguliariąja išraiška, pateikdami 10 praktinių pavyzdžių apie jos diegimą. Daugelis šiame straipsnyje aptartų pavyzdžių turi praktinę reikšmę, tai reiškia, kad galite juos naudoti kasdien programuodami „Linux“. Šie pavyzdžiai apibūdina keletą dažniausiai ieškomų modelių regexp pavyzdžių.

1 pavyzdys: tekstiniame faile raskite vieną užsakomąjį reisą

Norėdami išvesties failo „knyga“ eilutes, kuriose yra simbolis „$“, įveskite:

$ grep '\ $' knyga

2 pavyzdys: suraskite vieną eilutę teksto faile

Failo „knyga“, kuriame yra eilutė „$ 14“, išvesties eilutės.99 ', tipas:

$ grep '\ $ 14 \.99 'knyga

3 pavyzdys: tekstiniame faile raskite vieną specialų frachtuotoją

Norėdami išvesties failo „knyga“ eilutes, kuriose yra simbolis „\“, įveskite:

$ grep '\\' knyga

4 pavyzdys: linijų derinimas, pradedant tam tikru tekstu

Jei norite pažymėti eilutės pradžią, regexp naudokite „ˆ“.

Norėdami išvesti visas eilutes „/ usr / dict / words“, prasidedančiose „pro“, įveskite:

$ grep 'ˆpro' / usr / dict / words

Norėdami išleisti visas failo „knyga“ eilutes, kurios prasideda tekstu „pradžioje“, neatsižvelgiant į atvejį, įveskite:

$ grep -i 'pradžioje' knygoje

PASTABA: Šie regexps'ai buvo cituojami simboliais; taip yra todėl, kad kai kurie kriauklės kitaip traktuoja „treat“ simbolį kaip specialų „metachakterį“

Be žodžių ir frazių paieškų, grep galite naudoti ieškodami sudėtingų teksto šablonų, vadinamų reguliariomis išraiškomis. Reguliarioji išraiška arba „regexp“ yra specialiųjų simbolių teksto eilutė, nurodanti a rinkinys modelių, kad atitiktų.

Techniškai kalbant, žodžių ar frazių modeliai yra reguliarūs posakiai, tiesiog labai paprasti. Reguliariajame posakyje dauguma simbolių, įskaitant raides ir skaičius, reprezentuoja save. Pavyzdžiui, regexp modelis 1 atitinka eilutę „1“ ir modelį berniukas atitinka eilutę „berniukas“.

Yra keletas rezervuotų simbolių, vadinamų metaženklais, kurie nėra įprasti reiškiniai, tačiau jie turi ypatingą reikšmę, naudojamą sudarant sudėtingus modelius. Šie metaženklai yra šie: ., *, [, ], ˆ, $ ir \. Gerai pažymėti, kad tokie metaženkliai yra būdingi beveik visuose įprastuose ir specialiuose „Linux“ paskirstymuose. Čia yra geras straipsnis, kuriame pateikiamos specialios metaženklų reikšmės ir pateikiami jų naudojimo pavyzdžiai.

5 pavyzdys: eilučių, kurios baigiasi tam tikru tekstu, derinimas

Naudokite „$“ kaip paskutinį cituojamo teksto simbolį, kad atitiktų tą tekstą tik eilutės pabaigoje. Norėdami išvesties eilutes faile „eina“, baigiant šauktuku, įveskite:

$ grep '!$ 'vyksta

6 pavyzdys: tam tikro ilgio linijos

Norėdami suderinti tam tikro ilgio linijas, naudokite tą skaičių.'simboliai tarp' ˆ 'ir' $ '- pvz., norint sutapti su visomis dviejų simbolių (arba stulpelių) pločio eilutėmis, ieškokite ieškodami regreso' ˆ… $ '.

Norėdami išvesti visas „/ usr / dict / words“ eilutes, kurios yra tiksliai trijų simbolių pločio, įveskite:

$ grep 'ˆ ... $' / usr / dict / words

Ilgesnėms eilutėms naudingiau naudoti kitą konstrukciją: 'ˆ.\ skaičius \ $ ', kur skaičius yra atitinkamų eilučių skaičius. Norėdami nurodyti skaičių diapazoną, naudokite „,“.

Norėdami išvesti visas „/ usr / dict / words“ eilutes, kurios yra lygiai dvylikos simbolių pločio, įveskite:

$ grep 'ˆ.\ 12 \ $ '/ usr / dict / words

Norėdami išvesti visas „/ usr / dict / words“ eilutes, kurių plotis yra dvidešimt du ar daugiau simbolių, įveskite:

$ grep 'ˆ.\ 22, \ $ '/ usr / dict / words

7 pavyzdys: sutampančios eilutės, kuriose yra bet kuris regexpsas

Norėdami suderinti eilutes, kuriose yra bet kuris iš regexps, nurodykite kiekvieną regexps, kad galėtumėte ieškoti tarp pakaitinių operatorių ('\ |') kaip regexp ieškant. Bus išvestos eilutės, kuriose yra bet kuris iš nurodytų regexps.

Norėdami išrašyti visas „playboy“ eilutes, kuriose yra rašmenys „knyga“ arba „tortas“, įveskite:

$ grep 'knyga \ | tortas' playboy

8 pavyzdys: sutampančios eilutės, kuriose yra visi kai kurie regexps

Išvesties eilutėms, kurios atitinka visi iš daugelio regexps'ų naudokite grep, kad išvestumėte eilutes, kuriose yra pirmasis norimas atitikti regexp, ir pateikite išvestį į grep, o antrasis regexp yra argumentas. Toliau pridėkite pypkes, kad atliktumėte visų norimų paieškos laukų paieškas.

Norėdami išleisti visas „grojaraščio“ eilutes, kuriose yra šablonai „krantas“ ir „dangus“, neatsižvelgiant į atvejį, įveskite:

$ grep -i 'kranto' grojaraštis | grep -i dangus

9 pavyzdys: linijos, kuriose yra tik tam tikri simboliai

Norėdami suderinti eilutes, kuriose yra tik tam tikrų simbolių, naudokite regexp 'ˆ [simboliai] * $', kur sutampa simboliai.  Norėdami išvesties eilutes „/ usr / dict / words“, kuriose yra tik balsiai, įveskite:

$ grep -i 'ˆ [aeiou] * $' / usr / dict / žodžiai

Parinktis „-i“ sutampa su simboliais, neatsižvelgiant į mažąsias ir mažąsias raides; taigi, šiame pavyzdyje visi balsių simboliai sutapatinami neatsižvelgiant į didžiųjų ir mažųjų raidžių atvejus.

10 pavyzdys: frazių paieška, nepaisant tarpų

Vienas iš būdų ieškoti frazės, kuri gali atsirasti su papildomais tarpais tarp žodžių arba skersai eilutės ar puslapio pertraukos, yra pašalinti visas eilutės tiekimo vietas ir papildomas tarpus iš įvesties, tada paimti. Norėdami tai padaryti, perkelkite įvestį į tr naudodami parinktį '-d' kaip argumentą "\ r \ n: \> \ | -" (pašalindami visas eilutės pertraukas iš įvesties); prijunkite prie FM filtro naudodami parinktį „-u“ (tekstas išvedamas vienodais tarpais); ir pypkę, kad patrauktumėte pagal ieškomą modelį.

Norėdami ieškoti eilučių pertraukose eilutės „tuo pačiu metu kaip„ faile „docs“, įveskite:

$ kačių dokumentai | tr -d '\ r \ n: \> \ |
-"| fmt -u | grep "tuo pačiu metu kaip"

Santrauka

Šiame straipsnyje apžvelgėme 10 praktinių „Grep Linux“ komandos pavyzdžių, kaip ieškoti ir rasti eilutes tekstiniame faile, pavyzdžių. Kelyje sužinojome, kaip naudoti įprastus posakius kartu su „Grep“, norint atlikti sudėtingas paieškas teksto failuose. Dabar jau geriau suprantate, kokios yra „Linux“ paieškos funkcijos.

Čia yra papildomų išteklių tiems, kurie nori sužinoti daugiau apie „Linux“ programavimą:

Ištekliai sistemos administratoriams

Ištekliai „Linux“ branduolio programuotojams

„Linux“ failų sistemos žodynas

Išsami „Linux“ failų ir katalogų sistemos apžvalga

Kaip atsisiųsti ir paleisti „Sid Meier Civilization VI“ sistemoje „Linux“
Įvadas į žaidimą „Civilization 6“ yra šiuolaikinė klasikinės koncepcijos, pristatytos „Age of Empires“ žaidimų serijoje, koncepcija. Idėja buvo gana p...
Kaip įdiegti ir žaisti „Doom“ sistemoje „Linux“
Įvadas į Doom „Doom“ serija atsirado 90-aisiais, išleidus originalų „Doom“. Tai buvo tiesioginis hitas, o nuo to laiko žaidimų serija gavo daugybę apd...
„Vulkan“, skirta „Linux“ vartotojams
Kiekvienos naujos kartos grafikos plokštės matome, kaip žaidimų kūrėjai peržengia grafinės ištikimybės ribas ir artėja prie fotorealizmo. Nepaisant vi...