V tomto článku vysvetlíme použitie utility grep na rôznych príkladoch. Debian 10 použijeme na vysvetlenie príkazov a metód uvedených v tomto článku.
Inštalácia Grep
Grep je nainštalovaný vo väčšine distribúcií Linuxu. Ak však vo vašom systéme chýba, môžete ho nainštalovať pomocou nasledujúcej metódy v Termináli:
$ sudo apt-get nainštalovať grepPoužívanie Grep
Tu je základná syntax príkazu grep. Začína sa to grepom, nasledujú niektoré možnosti a kritériá vyhľadávania a potom sa to končí názvom súboru.
$ grep [možnosti] VZOR [SÚBOR ...]Vyhľadajte súbory
Ak chcete vyhľadať názov súboru v adresári, ktorý obsahuje konkrétny reťazec, môžete použiť grep nasledujúcim spôsobom:
$ ls -l | grep -i “reťazecNapríklad na vyhľadanie názvu súboru, ktorý obsahuje reťazec „test“, Príkaz by bol:
$ ls -l | grep -i testTento príkaz vypíše všetky súbory, ktoré obsahujú reťazec „test“.
Vyhľadajte reťazec v súbore
Ak chcete vyhľadať reťazec v konkrétnom súbore, môžete použiť nasledujúcu syntax príkazu:
$ grep “string” nazov suboruNapríklad na vyhľadanie reťazca „test”V súbore s názvom testfile1, použili sme nasledujúci príkaz:
$ grep testovací súbor „zamestnanca“ 1
Vyššie uvedený výstup vrátil vetu z testfile1 ktorý obsahuje reťazec „zamestnanec“.
Vyhľadajte reťazec vo viacerých súboroch
Ak chcete vyhľadať reťazec vo viacerých súboroch, môžete použiť nasledujúcu syntax príkazu:
$ grep „reťazec“ názov súboru1 názov súboru2Napríklad na vyhľadanie reťazca „zamestnanec“ v našich dvoch súboroch testfile1 a testfile2 sme použili nasledujúci príkaz:
$ grep “zamestnanec” testfile1 testfile2
Vyššie uvedený príkaz vypíše všetky riadky, ktoré obsahujú reťazec „zamestnanec“ z oboch súborov testfile1 a testfile2.
Zástupný znak môžete použiť aj vtedy, ak všetky názvy súborov začínajú rovnakým textom.
$ grep “string” nazov souboru *Ako keby sme si vzali vyššie uvedený príklad, v ktorom boli naše názvy súborov testfile1 a testfile2 , príkaz by bol:
$ grep testovací súbor „zamestnanca“ *
Vyhľadajte reťazec v súbore ignorovaním veľkých a malých písmen reťazca
Najčastejšie ste sa stretli s tým, že keď niečo hľadáte pomocou grepu, ale nedostanete výstup. Stáva sa to kvôli nesúladu prípadov pri hľadaní reťazca. Rovnako ako v našom príklade, ak omylom použijeme „Zamestnanec" namiesto "zamestnanec„, Vráti sa nula, pretože náš súbor obsahuje reťazec„zamestnanec”Malými písmenami.
Môžete povedať grepu, aby ignoroval prípad hľadaného reťazca pomocou príznaku -i po grepe nasledovne:
$ grep -i „reťazcový“ názov súboru
Použitím príznaku -i vykoná príkaz vyhľadávanie bez rozlišovania malých a veľkých písmen a vráti všetky riadky obsahujúce reťazec „zamestnanec”V ňom bez zohľadnenia písmen sú veľké alebo malé písmená.
Hľadajte pomocou regulárneho výrazu
Ak je regulárny výraz správne použitý, je veľmi efektívnym prvkom grepu. Príkazom Grep môžete definovať regulárny výraz s počiatočným a koncovým kľúčovým slovom. Ak tak urobíte, nebudete musieť písať celý riadok pomocou príkazu grep. Na tento účel možno použiť nasledujúcu syntax.
$ grep “počiatočné kľúčové slovo.* končiace kľúčové slovo “názov súboruNapríklad na vyhľadanie riadku v súbore s názvom testfile1, ktorý sa začína reťazcom „this“ a končí reťazcom „data“, sme použili nasledujúci príkaz:
$ grep „toto.* data “testfile1
Vytlačí celý riadok z testfile1 obsahujúce výraz (počiatočné kľúčové slovo „toto“ a končiace kľúčové slovo „údaje“).
Vytlačiť konkrétny počet riadkov za / pred hľadaným reťazcom
Môžete tiež zobraziť konkrétny počet riadkov v súbore pred / po zhode reťazcov spolu s príslušným reťazcom samotným. Na tento účel možno použiť nasledujúcu syntax:
$ grep -APo priradení reťazca k zadanému súboru vrátane priradeného reťazca zobrazí N počet riadkov.
Toto je napríklad náš ukážkový súbor s názvom testfile2.
Nasledujúci príkaz vygeneruje zhodný riadok obsahujúci reťazec „zamestnanec”, Spolu s 2 riadkami po ňom.
$ grep -A 2 -i testovací súbor „zamestnanca “2
Podobne, ak chcete zobraziť N počet riadkov pred zhodným reťazcom v konkrétnom súbore, použite nasledujúcu syntax:
$ grep -BAk chcete zobraziť N počet riadkov okolo reťazca v konkrétnom súbore, použite nasledujúcu syntax:
$ grep -CZvýraznenie vyhľadávania
Grep predvolene tlačí zhodné riadky, ale neukazuje, ktorá časť riadku sa zhoduje. Ak použijete voľbu -color s grepom, zobrazí sa, kde sa vo vašom súbore nachádzajú obrábacie reťazce. Grep predvolene používa na zvýraznenie červenú farbu.
Na tento účel možno použiť nasledujúcu syntax:
$ grep "string" nazov souboru --color
Počítanie počtu zápasov
Ak chcete spočítať, koľkokrát sa konkrétne slovo objaví v konkrétnom súbore, môžete použiť voľbu grep s -c. Vráti iba počet zápasov, a nie samotné zápasy. Na tento účel možno použiť nasledujúcu syntax:
$ grep -c názov súboru „string“Toto je náš vzorový súbor, ktorý vyzerá takto:
Nasleduje príklad príkazu, ktorý vrátil počet opakovaní slova spis sa objavil v súbore s názvom testfile3.
Obrátené vyhľadávanie
Niekedy chcete vykonať spätné vyhľadávanie, ktoré zobrazí všetky riadky okrem tých, ktoré sa zhodujú so vstupom. Ak to chcete urobiť, jednoducho použite príznak -v nasledovaný znakom grep:
$ grep -v „reťazcový“ názov súboruNapríklad na zobrazenie všetkých riadkov v súbore testfile3 ktoré v nich neobsahujú slovo „účet“, použili sme nasledujúci príkaz:
$ grep -v „účet“ testfile3
Používanie Grepu s inými príkazmi
Grep je možné použiť aj na odfiltrovanie požadovaného výsledku z rôznych výstupov príkazov. Napríklad z „zoznam apt-nainštalovaný ” príkazový výstup, chcete vyhľadať iba balíčky, ktoré boli nainštalované automaticky, môžete výsledok odfiltrovať pomocou grepu nasledovne:
$ apt - nainštalovaný zoznam grep automatické
Podobne lscpu poskytuje podrobné informácie o CPU. Ak vás zaujímajú iba informácie týkajúce sa architektúry CPU, môžete ich odfiltrovať pomocou nasledujúceho príkazu:
$ lscpu | grep Architektúra
V tomto článku sme popísali niekoľko príkladov, ktoré vám pomôžu porozumieť príkazom grep a ich použitiu v rôznych podmienkach. Silné stlačenie príkazu grep vám môže ušetriť veľa času, ak sa potrebujete pozrieť na veľké konfiguračné súbory alebo súbory denníka a prehľadávať pomocou nich užitočné informácie.