V tomto článku vám ukážeme, ako spustiť pokročilé vyhľadávanie reťazcov pomocou funkcie Grep s regulárnym výrazom, a poskytneme vám 10 praktických príkladov jeho implementácií. Mnoho príkladov diskutovaných v tomto článku má praktické dôsledky, čo znamená, že ich môžete použiť pri každodennom programovaní systému Linux. Nasledujúce ukážky popisujú niektoré príklady regulárnych výrazov pre bežne vyhľadávané vzory.
Pr. 1: Vyhľadanie jedinej charterovej organizácie v textovom súbore
Ak chcete vypísať riadky v súbore „kniha“, ktoré obsahujú znak „$“, zadajte:
$ grep '\ $' knihaPríklad 2: Nájdite jeden reťazec v textovom súbore
Na výstup riadkov v súbore „kniha“, ktorý obsahuje reťazec „14 dolárov.99 ', typ:
$ grep '\ $ 14 \.99 'knihaPr. 3: Nájdite jediného špeciálneho charteru v textovom súbore
Ak chcete vypísať riadky v súbore „kniha“, ktoré obsahujú znak „\“, zadajte:
$ grep '\\' knihaPr. 4: Zhodné riadky začínajúce určitým textom
Na označenie začiatku riadku použite znak „ˆ“ v regulárnom výraze.
Ak chcete zobraziť všetky riadky v adresári „/ usr / dict / words“ začínajúce znakom „pro“, zadajte:
$ grep 'ˆpro' / usr / dict / slováAk chcete vypísať všetky riadky v súbore „kniha“, ktoré začínajú textom „na začiatku“, bez ohľadu na veľkosť písmen, zadajte:
$ grep -i Kniha „beginningna začiatku“POZNÁMKA: Tieto regulárne výrazy boli označené znakmi; je to preto, lebo niektoré mušle inak považujú znak „ˆ“ za špeciálny „metaznak“
Okrem vyhľadávania slov a fráz môžete pomocou grepu vyhľadávať zložité textové vzory nazývané regulárne výrazy. Regulárny výraz - alebo „regexp“ - je textový reťazec špeciálnych znakov, ktorý určuje a nastaviť vzorov, ktoré sa majú zhodovať.
Technicky vzaté, vzory slov alebo fráz sú regulárne výrazy - len veľmi jednoduché. V regulárnom výraze sa väčšina znakov vrátane písmen a číslic predstavuje sama. Napríklad vzor regexp 1 zodpovedá reťazcu „1“ a vzoru chlapec zodpovedá reťazcu „chlapec“.
Existuje niekoľko vyhradených znakov nazývaných metaznaky, ktoré sa v regulárnom výraze nereprezentujú, ale majú špeciálny význam, ktorý sa používa na vytvorenie zložitých vzorov. Ide o tieto metaznaky: ., *, [, ], ˆ, $ a \. Je dobré poznamenať, že takéto metaznaky sú bežné takmer vo všetkých bežných a špeciálnych distribúciách Linuxu. Tu je dobrý článok, ktorý pokrýva špeciálne významy metaznakov a uvádza príklady ich použitia.
Pr. 5: Zhodné riadky končiace určitým textom
Použite znak „$“ ako posledný znak citovaného textu, aby sa text zhodoval iba na konci riadku. Ak chcete vypísať riadky v súbore, končiace výkričníkom, zadajte:
$ grep '!$ 'idePr. 6: Zhodné čiary určitej dĺžky
Ak chcete zladiť riadky určitej dĺžky, použite počet znakov '.„znaky medzi„ ˆ “a„ $ “- napríklad na zhodu všetkých riadkov, ktoré sú široké dva znaky (alebo stĺpce), použite„ ˆ… $ “ako regexp na vyhľadanie.
Ak chcete vygenerovať všetky riadky v adresári „/ usr / dict / words“, ktoré majú presne tri znaky, zadajte:
$ grep 'ˆ ... $' / usr / dict / slováPre dlhšie čiary je užitočnejšie použiť iný konštrukt: 'ˆ.\ number \ $ ', kde number je počet riadkov, ktoré sa majú zhodovať. Pomocou znakov „,“ zadajte rozsah čísel.
Ak chcete zobraziť všetky riadky v adresári „/ usr / dict / words“, ktoré majú šírku presne dvanástich znakov, zadajte:
$ grep 'ˆ.\ 12 \ $ '/ usr / dict / slováAk chcete vygenerovať všetky riadky v priečinku „/ usr / dict / words“, ktorých šírka je dvadsaťdva alebo viac znakov, zadajte:
$ grep 'ˆ.\ 22, \ $ '/ usr / dict / slováPríklad 7: Zhodné riadky, ktoré obsahujú niektorý z niektorých regulárnych výrazov
Ak chcete priradiť riadky, ktoré obsahujú ľubovoľný počet regulárnych výrazov, zadajte každý z výrazov, ktoré sa majú vyhľadávať medzi operátormi striedania ('\ |'), ako hľadaný výraz. Na výstupe budú riadky obsahujúce ktorýkoľvek z daných regulárnych výrazov.
Ak chcete do súboru „playboy“, ktorý obsahuje vzory „kniha“ alebo „torta“, vypísať všetky riadky, zadajte:
$ grep 'kniha \ koláč' playboyPr. 8: Zhodné riadky, ktoré obsahujú všetky niektoré regulárne výrazy
Na výstup zodpovedajúcich riadkov všetko z množstva regexps, použite grep na výstup riadkov obsahujúcich prvý regexp, ktorý chcete nájsť, a výstup potrubia na grep s druhým regexp ako argument. Pokračujte v pridávaní rúrok do grepových vyhľadávaní všetkých regulárnych výrazov, ktoré chcete vyhľadať.
Ak chcete vypísať všetky riadky v zozname skladieb, ktorý obsahuje vzory „pobrežie“ aj „obloha“, bez ohľadu na prípad, zadajte:
$ grep -i Zoznam skladieb 'the shore' grep -i oblohaPr. 9: Zhodné riadky, ktoré obsahujú iba určité znaky
Ak chcete priradiť riadky, ktoré obsahujú iba určité znaky, použite regulárny výraz „ˆ [znaky] * $“, kde sa zhodujú znaky. Ak chcete vygenerovať riadky v adresári „/ usr / dict / words“, ktoré obsahujú iba samohlásky, zadajte:
$ grep -i 'ˆ [aeiou] * $' / usr / dict / slováVoľba „-i“ sa zhoduje so znakmi bez ohľadu na veľkosť písmen; takže v tomto príklade sa všetky znaky samohlásky zhodujú bez ohľadu na veľkosť písmen.
Pr. 10: Hľadanie fráz bez ohľadu na medzery
Jedným zo spôsobov, ako vyhľadať frázu, ktorá sa môže vyskytnúť s medzerami medzi slovami alebo cez koniec riadku alebo stránky, je odstránenie všetkých riadkov a ďalších medzier zo vstupu a následné grepovanie. Za týmto účelom vložte kanál do tr s argumentom „\ r \ n: \> \ | -“ na voľbu „-d“ (odstránenie všetkých zalomení riadkov zo vstupu); prepojiť to s filtrom fmt s voľbou '-u' (výstup textu s rovnomerným rozstupom); a potrubie, ktoré má grep so vzorom hľadať.
Ak chcete hľadať v zlome riadkov reťazec „súčasne“ v súbore „docs“, zadajte:
$ mačka dokumenty | tr -d '\ r \ n: \> \ |-"| fmt -u | grep „súčasne“
Zhrnutie
V tomto článku sme preskúmali 10 praktických príkladov použitia príkazu Grep Linux na vyhľadávanie a hľadanie reťazcov v textovom súbore. Počas toho sme sa naučili, ako používať regulárne výrazy v spojení s Grepom na vykonávanie komplexného vyhľadávania v textových súboroch. Teraz už máte lepšiu predstavu o tom, aké výkonné sú funkcie vyhľadávania systému Linux.
Tu sú ďalšie zdroje pre záujemcov, ktorí sa chcú dozvedieť viac o programovaní v systéme Linux:
Zdroje pre správcov systému
- Sprievodca správcom systému Linux - Čo je operačný systém Linux a ako funguje
- Sprievodca správcom systému Linux - prehľad virtuálnej pamäte Linux a medzipamäte disku
- Sprievodca správcom systému Linux - Osvedčené postupy na monitorovanie systémov Linux
- Sprievodca správcom systému Linux - Osvedčené postupy pri spúšťaní a vypínaní systému Linux
- Sprievodca správcom systému Linux - Osvedčené postupy na vytváranie a správu operácií zálohovania
Zdroje pre programátorov jadra systému Linux
- Ako funguje správa pamäte operačného systému Linux
- Komplexná kontrola procesov operačného systému Linux
- Čo sú mechanizmy za správou úloh jadra systému Linux?
Slovník súborových systémov Linux
Komplexná kontrola fungovania súborového a adresárového systému Linux