Skip to main content

Príklady použitia príkazu grep Linux

Anonim

Príkaz grep grep sa používa ako metóda na filtrovanie vstupu. GREP znamená globálnu regulárnu expresnú tlačiareň a preto, aby ste ju efektívne používali, mali by ste mať určité znalosti o regulárnych výrazoch.

V tomto článku sa dozviete niekoľko príkladov, ktoré vám pomôžu pochopiť príkaz grep.

01 z 09

Ako hľadať reťazec v súbore pomocou GREP

Predstavte si, že máte textový súbor nazvaný knihy s nasledujúcimi detskými knihami:

  • Robin Hood
  • Červená čiapočka
  • Peter Pan
  • Zlatovláska a tri medvede
  • Snehulienka a sedem trpaslíkov
  • Pinnochio
  • Mačka v klobúku
  • Tri malé prasiatka
  • Gruffalo
  • Charlie a továreň na čokoládu

Ak chcete nájsť všetky knihy so slovom "The" v názve, použite nasledujúcu syntax:

grep Knihy

Nasledujúce výsledky budú vrátené:

  • Zlatovláska a tri medvede
  • Snehulienka a sedem trpaslíkov
  • Mačka v klobúku
  • Tri malé prasiatka
  • Gruffalo
  • Charlie a továreň na čokoládu

V každom prípade sa zvýrazní slovo "The".

Vyhľadávanie je citlivé na veľké a malé písmená, takže ak jeden z titulov mal "miesto" namiesto "The", potom by nebol vrátený.

Ak chcete ignorovať prípad, môžete pridať nasledujúci prepínač:

grep knihy - case-case

Prepínač -i môžete použiť aj nasledovne:

grep -i knihy

Pokračujte v čítaní nižšie

02 z 09

Vyhľadanie reťazca v súbore pomocou zástupných znakov

Príkaz grep je veľmi silný. Na filtrovanie výsledkov môžete použiť množstvo metód porovnávania vzorov.

V tomto príklade vám ukážem, ako vyhľadávať reťazec v súbore pomocou zástupných znakov.

Predstavte si, že máte súbor nazvaný miesta s nasledujúcimi škótskymi miestami:

AberdeenAberystwythAberlourInverurieInvernessNewburghnový jeleňnový gallowayGlasgowEdinburgh

Ak chcete nájsť všetky miesta s inverziou v názve, použite nasledujúcu syntax:

grep inver * miesta

Hárok hviezdičkou (*) je 0 alebo veľa. Preto ak máte miesto nazývané inver alebo miesto nazývané Inverness, obaja by sa vrátili.

Ďalšou zástupnou značkou, ktorú môžete použiť, je obdobie (.). Môžete použiť toto, aby zodpovedalo jednému písmenu.

grep inver.r miesta

Vyššie uvedený príkaz by našiel miesta nazývané "inverurie" a "inverrné", ale nenašiel by inverenciu, pretože medzi dvoma r, ako je označené jedným obdobím, môže existovať iba jeden zástupný znak.

Doba zástupného znaku je užitočná, ale môže spôsobiť problémy, ak máte ako súčasť textu, ktorý hľadáte.

Pozrite sa napríklad na tento zoznam názvov domén

  • linux.about.com
  • pcsupport.about.com
  • mp3.about.com
  • minecraft.about.com
  • androidgames.about.com
  • netforbeginners.about.com
  • everydaylinuxuser.com
  • google.co.uk
  • google.au
  • direct.gov.uk

Ak chcete nájsť všetky .com, môžete jednoducho vyhľadávať pomocou nasledujúcej syntaxe:

grep * about * názvy domén

Vyššie uvedený príkaz by padol, ak by obsahoval v ňom nasledujúci názov:

  • everydaylinuxuser.com/about.html

Mohli by ste preto vyskúšať nasledujúcu syntax:

grep * domain.com

To by fungovalo v poriadku, ak neexistovala doména s nasledujúcim názvom:

aboutycom.com

Ak chcete skutočne hľadať termín about.com, musíte uniknúť bodkou takto:

grep * o názvoch domén .com

Posledná zástupná karta, ktorá vám ukáže, je otáznik, ktorý znamená nula alebo jeden znak.

Napríklad:

grapple placenames

Vyššie uvedený príkaz by vrátil aberdeen, aberystwyth alebo dokonca berwick.

Pokračujte v čítaní nižšie

03 z 09

Vyhľadávanie reťazcov na začiatku a konci linky Pomocou grep

Symboly karát (^) a dolár ($) umožňujú vyhľadávať vzory na začiatku a konci riadkov.

Predstavte si, že máte súbor s názvom futbal s nasledujúcimi názvami tímov:

  • Blackpool
  • Liverpool
  • mesto Manchester
  • mesto Leicester
  • Manchester United
  • Newcastle United
  • FC Spojené Manchester

Ak ste chceli nájsť všetky tímy, ktoré začali s Manchesterom, použili by ste nasledujúcu syntax:

grep ^ Manchester tímy

Vyššie uvedený príkaz by sa vrátil Manchester City a Manchester United, ale nie FC United Manchester.

Prípadne môžete nájsť všetky tímy, ktoré končí s United, pomocou nasledujúcej syntaxe:

grep United $ tímy

Vyššie uvedený príkaz by sa vrátil do Manchester United a Newcastle United, ale nie do FC United Manchester.

04 z 09

Počítanie počtu zhody pomocou grep

Ak nechcete vrátiť skutočné riadky, ktoré zodpovedajú vzoru pomocou grep, ale chcú vedieť, koľko existuje, môžete použiť nasledujúcu syntax:

grep -c pattern file

Ak bol vzor dvakrát porovnaný, číslo 2 sa vráti.

Pokračujte v čítaní nižšie

05 z 09

Hľadanie všetkých výrazov, ktoré sa nezhodujú s použitím grep

Predstavte si, že máte zoznam krajín s nasledujúcimi krajinami:

  • aberdeen skotsko
  • glasgow skotsko
  • liverpool Anglicko
  • colwyn bay
  • Londýn, Anglicko

Možno ste si všimli, že v zátoke Colwyn nie je s ňou spojená žiadna krajina.

Ak chcete vyhľadať všetky miesta v krajine, môžete použiť nasledujúcu syntax:

grep land $ places

Výsledok vráti by boli všetky miesta okrem colwyn bay.

To samozrejme funguje len pre miesta, ktoré končí v krajine (ťažko vedecké).

Výber môžete prevrátiť pomocou nasledujúcej syntaxe:

grep -v pozemky $ miesta

Toto by našlo všetky miesta, ktoré nekončili pozemkami.

06 z 09

Ako nájsť prázdne riadky v súboroch pomocou grep

Predstavte si, že máte vstupný súbor, ktorý používa aplikácia tretej strany, ktorá zastaví čítanie súboru, keď nájde prázdny riadok takto:

  • aberdeen scotland
  • inverness scotland
  • liverpool england
  • colwyn bay wales

Keď sa aplikácia dostane po línii po lúpehu, zastaví čítanie, čo znamená, že celá chýbajúca zátoka je úplne vynechaná.

Môžete použiť grep na vyhľadávanie prázdnych riadkov s nasledujúcou syntaxou:

grep ^ $ miesta

Bohužiaľ to nie je veľmi užitočné, pretože práve vracia prázdne riadky.

Môžete samozrejme získať počet prázdnych riadkov ako kontrolu, či je súbor platný nasledovne:

grep -c ^ $ miesta

Bolo by však užitočné poznať čísla riadkov, ktoré majú prázdnu čiaru, takže ich môžete nahradiť. Môžete to urobiť pomocou nasledujúceho príkazu:

grep -n ^ $ miesta

Pokračujte v čítaní nižšie

07 z 09

Ako hľadať struny veľkých alebo malých znakov pomocou grep

Pomocou grep môžete určiť, ktoré riadky v súbore majú veľké znaky pomocou nasledujúcej syntaxe:

grep 'A-Z'

Hranaté zátvorky umožňujú určiť rozsah znakov. Vo vyššie uvedenom príklade zodpovedá akémukoľvek znaku, ktorý je medzi A a Z.

Preto, aby ste sa zhodovali s malými písmenami, môžete použiť nasledujúcu syntax:

grep 'a-z'

Ak chcete priradiť iba písmená a nie numerické alebo iné symboly, môžete použiť nasledujúcu syntax:

grep 'a-zA-Z'

Môžete urobiť to isté s číslami takto:

grep '0-9' názov súboru 08 z 09

Hľadáte opakujúce sa vzory Pomocou grep

Môžete použiť kužeľové zátvorky {} na vyhľadanie opakujúceho sa vzoru.

Predstavte si, že máte súbor s telefónnymi číslami:

  • 055-1234
  • 055-4567
  • 555-1545
  • 444-0167
  • 444-0854
  • 4549-2234
  • x44-1234

Viete, že prvá časť čísla musí mať tri číslice a chcete nájsť riadky, ktoré nezodpovedajú tomuto vzoru.

Z predchádzajúceho príkladu viete, že 0-9 vráti všetky čísla v súbore.

V tomto prípade chceme riadky, ktoré začínajú tromi číslami, za ktorými nasleduje pomlčka (-). Môžete to urobiť pomocou nasledujúcej syntaxe:

grep "^ 0-9 0-9 0-9 -" čísla

Ako vieme z predchádzajúcich príkladov, karát (^) znamená, že riadok musí začínať nasledujúcim vzorom.

0-9 bude vyhľadávať ľubovoľné číslo medzi 0 a 9. Keď je toto zahrnuté trikrát, zodpovedá 3 číslam. Nakoniec existuje pomlčka, ktorá označuje, že pomlčka musí nasledovať po troch číslach.

Použitím kužeľových zátvoriek môžete vyhľadávanie meniť nasledovne:

grep "^ 0-9 {3 } -" čísla

Lomka unikne {zátvorke tak, že funguje ako súčasť regulárneho výrazu, ale v podstate to, čo hovorí, je 0-9 {3}, čo znamená akékoľvek číslo medzi 0 a 9 trikrát.

Kliešte môžu byť použité aj nasledovne:

{5,10}{5,}

{5,10} znamená, že vyhľadávaný znak sa musí opakovať najmenej päťkrát, ale nie viac ako 10, zatiaľ čo {5,} znamená, že znak sa musí opakovať najmenej päťkrát, ale môže to byť viac ako to.

Pokračujte v čítaní nižšie

09 z 09

Použitie výstupu z iných príkazov pomocou grep

Zatiaľ sme sa pozreli na zhodu vzoru v rámci jednotlivých súborov, ale grep môže použiť výstup z iných príkazov ako vstup pre prispôsobenie vzorov.

Skvelým príkladom toho je príkaz ps, ktorý uvádza zoznam aktívnych procesov.

Napríklad spustite nasledujúci príkaz:

ps -ef

Zobrazia sa všetky spustené procesy vo vašom systéme.

Môžete použiť grep na vyhľadanie konkrétneho spúšťacieho procesu nasledovne:

ps -ef | grep firefox

zhrnutie

Príkaz grep je základný príkaz linuxu a je to jeden, ktorý stojí za to sa učiť, pretože to uľahčí život pri vyhľadávaní súborov a procesov pri používaní terminálu.