U ovom ćemo vam članku pokazati kako pokrenuti unaprijed pretraženo nizanje pomoću Grepa s regularnim izrazom davanjem 10 praktičnih primjera njegovih implementacija. Mnogi primjeri o kojima se govori u ovom članku imaju praktične implikacije, što znači da ih možete koristiti u svakodnevnom programiranju Linuxa. Sljedeći uzorci opisuju neke primjere regularnih izraza za najčešće tražene uzorke.
Primjer 1: Pronađite jednog zakupca u tekstualnoj datoteci
Za izlaz redova u datoteci 'knjiga' koji sadrže znak '$' upišite:
$ grep '\ $' knjigaPrimjer 2: Pronađite pojedinačni niz u tekstualnoj datoteci
Za izlaz redova u datoteci 'knjiga' koja sadrži niz '14 dolara.99 ', tip:
$ grep '\ $ 14 \.99 'knjigaPrimjer 3: Pronađite jednog posebnog zakupca u tekstualnoj datoteci
Za ispis redaka u datoteci 'knjiga' koji sadrže znak '\' upišite:
$ grep '\\' knjigaPrimjer 4: Podudaranje linija koje počinju s određenim tekstom
Upotrijebite 'ˆ' u regularnom izrazu da biste označili početak retka.
Za izlaz svih redaka u '/ usr / dict / words' koji počinju s 'pro', upišite:
$ grep 'ˆpro' / usr / dict / wordsZa izlaz svih redaka u datoteci "knjiga" koji počinju tekstom "na početku", bez obzira na velika i mala slova, upišite:
$ grep -i 'u početku' knjigaBILJEŠKA: Ti su regularni izrazi citirani znakovima '; to je zato što se neke ljuske inače ponašaju prema znaku 'ˆ' kao prema posebnom "metaznaku"
Pored pretraživanja riječi i fraza, grep možete koristiti za traženje složenih tekstualnih obrazaca koji se nazivaju regularnim izrazima. Regularni izraz-ili "regexp" -je tekstualni niz posebnih znakova koji specificira postavljen uzoraka koji se podudaraju.
Tehnički gledano, obrasci riječi ili fraze regularni su izrazi - samo vrlo jednostavni. U regularnom izrazu, većina znakova - uključujući slova i brojeve - predstavlja sebe. Na primjer, uzorak regularnog izraza 1 odgovara nizu '1' i uzorku dječak podudara se s nizom "dječak".
Postoji niz rezerviranih znakova koji se nazivaju metaznakovima i koji se ne predstavljaju u regularnom izrazu, ali imaju posebno značenje koje se koristi za izgradnju složenih uzoraka. Ti su metaznakovi sljedeći: ., *, [, ], ˆ, $ i \. Dobro je napomenuti da su takvi metaznakovi česti među gotovo svim uobičajenim i posebnim Linux distribucijama. Evo dobrog članka koji pokriva posebna značenja metaznaka i daje primjere njihove uporabe.
Primjer 5: Poklapanje linija koje završavaju s određenim tekstom
Upotrijebite '$' kao zadnji znak citiranog teksta kako biste taj tekst podudarali samo na kraju retka. Za izlaz redova u datoteci koja "ide" i završava s uskličnikom, upišite:
$ grep '!$ 'idePrimjer 6: Podudaranje linija određene duljine
Da biste podudarali linije određene duljine, upotrijebite taj broj '.'znakovi između' ˆ 'i' $ '- na primjer, za podudaranje svih redaka koji su široki dva znaka (ili stupca), upotrijebite' ˆ ... $ 'kao regularni izraz za traženje.
Za izlaz svih redaka u '/ usr / dict / words' koji su široki točno tri znaka upišite:
$ grep 'ˆ… $' / usr / dict / wordsZa duže crte korisnije je koristiti drugu konstrukciju: 'ˆ.\ broj \ $ ', gdje je broj odgovarajući broj redaka. Upotrijebite ',' za određivanje raspona brojeva.
Za izlaz svih redaka u '/ usr / dict / words' koji su široki točno dvanaest znakova, upišite:
$ grep 'ˆ.\ 12 \ $ '/ usr / dict / wordsZa izlaz svih redaka u '/ usr / dict / words' koji su široki dvadeset dva ili više znakova, upišite:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / wordsPrimjer 7: Podudaranje linija koje sadrže bilo koji od regularnih izraza
Da biste podudarali linije koje sadrže bilo koji od određenog broja regularnih izraza, navedite svaki od regularnih izraza koji će se tražiti između operatora izmjenjivanja ('\ |') kao regularni izraz za pretraživanje. Izlazit će redovi koji sadrže bilo koji od zadanih regularnih izraza.
Da biste izbacili sve retke u "playboyu" koji sadrži ili uzorke "knjiga" ili "kolač", upišite:
$ grep 'the book \ | cake' playboyPrimjer 8: Podudaranje linija koje sadrže sve neke regularne izraze
Za izlaz linije koje se podudaraju svi brojnih regularnih izraza, upotrijebite grep za izlazne retke koji sadrže prvi regularni izraz koji želite podudariti i preusmjerite izlaz u grep s drugim regularnim izrazom kao argumentom. Nastavite dodavati cijevi za grep pretraživanja svih regularnih izraza koje želite tražiti.
Za izlaz svih redaka na "popisu za reprodukciju" koji sadrži oba uzorka "obala" i "nebo", neovisno o slučaju, upišite:
$ grep -i 'popis obale' | grep -i neboPrimjer 9: Podudaranje linija koje sadrže samo određene znakove
Za podudaranje linija koje sadrže samo određene znakove upotrijebite regularni izraz 'ˆ [znakovi] * $', gdje se znakovi podudaraju. Za ispis redaka u '/ usr / dict / words' koji sadrže samo samoglasnike, upišite:
$ grep -i 'ˆ [aeiou] * $' / usr / dict / wordsOpcija '-i' odgovara znakovima bez obzira na velika i mala slova; tako da se u ovom primjeru podudaraju svi znakovi samoglasnika bez obzira na velika i mala slova.
Primjer 10: Pronalaženje fraza bez obzira na razmak
Jedan od načina pretraživanja fraze koja bi se mogla pojaviti s dodatnim razmacima između riječi, ili preko reda ili stranice, jest uklanjanje svih dodataka linija i dodatnih razmaka iz unosa, a zatim grep da. Da biste to učinili, dodajte ulaz u tr s "\ r \ n: \> \ | -" kao argument opciji '-d' (uklanjanje svih prijeloma reda s ulaza); cijevi do fmt filtra s opcijom '-u' (izlaz teksta s jednoličnim razmakom); i cijevi koja će se zgrtati s uzorkom za traženjem.
Da biste pretraživali niz prijeloma retka za niz "istovremeno s" u datoteci "dokumenti", upišite:
$ mačka dokumenti | tr -d '\ r \ n: \> \ |-'| fmt -u | grep 'istovremeno s'
Sažetak
U ovom smo članku pregledali 10 praktičnih primjera upotrebe naredbe Grep Linux za traženje i pronalaženje nizova u tekstualnoj datoteci. Usput smo naučili kako koristiti regularne izraze zajedno s Grepom za provođenje složenih pretraživanja tekstualnih datoteka. Do sada imate bolju ideju o tome koliko su moćne funkcije pretraživanja Linuxa.
Evo dodatnih resursa za one koje zanima više o Linux programiranju:
Resursi za administratore sustava
- Vodič za administratore Linux sustava - Što je Linux operativni sustav i kako on funkcionira
- Vodič za administratore Linux sustava - Pregled Linux virtualne memorije i predmemorije diska
- Vodič za administratore Linux sustava - Najbolji primjeri iz praćenja Linux sustava
- Vodič za administratore Linux sustava - Najbolji postupci za izvršavanje pokretanja i isključivanja Linuxa
- Vodič za administratore Linux sustava - Najbolji primjeri za izradu i upravljanje sigurnosnim kopijama
Resursi za programera jezgre Linuxa
- Kako funkcionira upravljanje memorijom operativnog sustava Linux
- Sveobuhvatan pregled procesa operativnog sustava Linux Kernel
- Koji su mehanizmi koji stoje iza upravljanja zadacima Linux Kernela
Rječnik Linux datotečnog sustava
Sveobuhvatan pregled rada Linux sustava datoteka i direktorija