V tem članku vam pokažemo, kako zagnati vnaprejšnje iskanje nizov z uporabo Grepa z regularnim izrazom, tako da vam predstavimo 10 praktičnih primerov njegovih izvedb. Številni primeri, obravnavani v tem članku, imajo praktične posledice, kar pomeni, da jih lahko uporabite pri vsakodnevnem programiranju Linuxa. Naslednji vzorci opisujejo nekaj primerov regularnih izrazov za pogosto iskane vzorce.
Primer 1: Poiščite enega zakupnika v besedilni datoteki
Če želite v datoteko 'book' izpisati vrstice, ki vsebujejo znak '$', vnesite:
$ grep '\ $' knjiga2. primer: v besedilni datoteki poiščite en niz
Za izpis vrstic v datoteki 'book', ki vsebuje niz '$ 14.99 ', tip:
$ grep '\ $ 14 \.99 'knjigaPrimer 3: V besedilni datoteki poiščite enega posebnega zakupnika
Če želite v datoteko 'book' izpisati vrstice, ki vsebujejo znak '\', vnesite:
$ grep '\\' knjigaPrimer 4: Ujemanje vrstic, ki se začnejo z določenim besedilom
Uporabite 'ˆ' v regularnem izrazu, da označite začetek vrstice.
Za izpis vseh vrstic v '/ usr / dict / words', ki se začnejo s 'pro', vnesite:
$ grep 'ˆpro' / usr / dict / wordsČe želite izpisati vse vrstice v datoteki 'knjiga', ki se začnejo z besedilom "na začetku", ne glede na veliko črko vnesite:
$ grep -i 'v začetku' knjigaOPOMBA: Ti regularni izrazi so bili citirani z znaki '; to je zato, ker nekatere lupine drugače obravnavajo znak 'ˆ' kot poseben "metaznak"
Poleg iskanja besed in besednih zvez lahko z grepom iščete tudi zapletene vzorce besedila, imenovane regularni izrazi. Regularni izraz - ali "regularni izraz" - je besedilni niz posebnih znakov, ki določa nastavite vzorcev, ki se ujemajo.
Tehnično gledano so vzorci besed ali besednih zvez regularni izrazi - le zelo preprosti. V regularnem izrazu se večina znakov, vključno s črkami in številkami, predstavlja sama. Na primer vzorec regularnega izraza 1 se ujema z nizom '1' in vzorcem fant se ujema z nizom "fant".
Obstaja več rezerviranih znakov, imenovanih metaznaki, ki se ne predstavljajo v regularnem izrazu, imajo pa poseben pomen, ki se uporablja za gradnjo zapletenih vzorcev. Ti metaznaki so naslednji: ., *, [, ], ˆ, $ in \. Dobro je omeniti, da so takšni metaznaki pogosti med skoraj vsemi običajnimi in posebnimi distribucijami Linuxa. Tu je dober članek, ki zajema posebne pomene metaznakov in daje primere njihove uporabe.
Primer 5: Ujemanje vrstic, ki se končajo z določenim besedilom
Kot zadnji znak citiranega besedila uporabite '$', da se besedilo ujema samo na koncu vrstice. Če želite v datoteko, ki se konča s klicajem, izpisati vrstice, vnesite:
$ grep '!$ 'grePrimer 6: Ujemajoče se črte določene dolžine
Če želite ujemati črte določene dolžine, uporabite to število.'znaki med' ˆ 'in' $ '- na primer, če se želite ujemati z vsemi vrsticami, ki so široke dva znaka (ali stolpca), uporabite "ˆ ... $" kot regularni izraz za iskanje.
Za izpis vseh vrstic v '/ usr / dict / words', ki so široke natančno tri znake, vnesite:
$ grep 'ˆ… $' / usr / dict / wordsZa daljše vrstice je koristneje uporabiti drugačno konstrukcijo: 'ˆ.\ število \ $ ', kjer je število število vrstic, ki se ujemajo. Uporabite ',' za določitev obsega številk.
Za izpis vseh vrstic v '/ usr / dict / words', ki so široke natanko dvanajst znakov, vnesite:
$ grep 'ˆ.\ 12 \ $ '/ usr / dict / wordsZa izpis vseh vrstic v '/ usr / dict / words', ki so široke dvaindvajset ali več znakov, vnesite:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / wordsPrimer 7: Ujemajoče se vrstice, ki vsebujejo katerega koli od regularnih izrazov
Če želite ujemati vrstice, ki vsebujejo katerega koli od številnih regularnih izrazov, podajte vsakega od regularnih izrazov, ki jih želite iskati med operaterji izmeničenja ('\ |'), kot regularni izraz za iskanje. Izpisale se bodo vrstice, ki vsebujejo katerega koli od danih regularnih izrazov.
Za izpis vseh vrstic v 'playboy', ki vsebuje bodisi vzorce 'knjiga' ali 'torta', vnesite:
$ grep 'the book \ | cake' playboyPrimer 8: Ujemajoče se vrstice, ki vsebujejo vse nekatere regularne izraze
Za izpis vrstic, ki se ujemajo vse številnih regularnih izrazov uporabite grep za izhodne vrstice, ki vsebujejo prvi regularni izraz, s katerim se želite ujemati, in izhod podajte v grep z drugim regularnim izrazom kot argumentom. Nadaljujte z dodajanjem cevi za iskanje z grep-om za vse regularne izraze, ki jih želite iskati.
Za izpis vseh vrstic na 'seznam predvajanja', ki vsebuje oba vzorca 'obala' in 'nebo', vnesite:
$ grep -i 'the shore' seznam predvajanja | grep -i neboPrimer 9: Ujemanje vrstic, ki vsebujejo samo določene znake
Če želite ujemati vrstice, ki vsebujejo samo določene znake, uporabite regularni izraz 'ˆ [znaki] * $', kjer se znaki ujemajo. Za izpis vrstic v '/ usr / dict / words', ki vsebujejo samo samoglasnike, vnesite:
$ grep -i 'ˆ [aeiou] * $' / usr / dict / wordsMožnost '-i' se ujema z znaki ne glede na velike in male črke; v tem primeru se torej ujemajo vsi znaki samoglasnikov, ne glede na velike in male črke.
Primer 10: Iskanje besednih zvez ne glede na razmike
Eden od načinov iskanja besedne zveze, ki bi se lahko pojavila z dodatnimi presledki med besedami ali prek preloma vrstice ali strani, je odstraniti vse podajalnike vrstic in odvečne presledke iz vnosa in nato zapisati. Če želite to narediti, vstavite vhod v tr z "\ r \ n: \> \ | -" kot argument možnosti '-d' (odstranitev vseh prelomov vrstic iz vhoda); napeljite to do fmt filtra z možnostjo '-u' (izpis besedila z enakomernim razmikom); in cev, ki naj grep z vzorcem za iskanje.
Če želite iskati niz po vrsticah med vrsticami hkrati z 'v datoteki' docs ', vnesite:
$ mačka dokumenti | tr -d '\ r \ n: \> \ |-'| fmt -u | grep 'istočasno kot'
Povzetek
V tem članku smo pregledali 10 praktičnih primerov uporabe ukaza Grep Linux za iskanje in iskanje nizov v besedilni datoteki. Med potjo smo se naučili, kako uporabljati regularne izraze skupaj z Grepom za zapleteno iskanje besedilnih datotek. Zdaj že imate boljše predstave o tem, kako zmogljive so funkcije iskanja za Linux.
Tu so dodatni viri za tiste, ki jih zanima več o programiranju Linuxa:
Viri za sistemske skrbnike
- Vodič za skrbnike sistema Linux - Kaj je operacijski sistem Linux in kako deluje
- Vodič za skrbnike sistema Linux - Pregled Linuxovega navideznega pomnilnika in predpomnilnika diskovnega vmesnika
- Vodič za skrbnike sistema Linux - Najboljše prakse za spremljanje sistemov Linux
- Vodič za skrbnike sistema Linux - Najboljše prakse za zagon in zaustavitev sistema Linux
- Vodič za skrbnike sistema Linux - Najboljše prakse za izdelavo in upravljanje varnostnih kopij
Viri za programerje jedra Linuxa
- Kako deluje upravljanje pomnilnika operacijskega sistema Linux
- Celovit pregled procesov operacijskega sistema jedra Linuxa
- Kakšni so mehanizmi za upravljanje opravil jedra Linuxa
Slovar datotečnega sistema Linux
Izčrpen pregled delovanja sistema datotek in imenikov Linux