Použitie grep na súbory, ktoré zodpovedajú špecifickým kritériám


Príkaz Grep (tlač globálneho regulárneho výrazu) zhoduje a hľadá špecifický vzor v regulárnych výrazoch. Tento príkaz filtruje a hľadá konkrétny vzor znakov a zobrazuje ich ako výstup. Považuje sa za jeden z najužitočnejších príkazov na systémoch Unix/Linux pre správcov systému a vývojárov.

Linux obsahuje rôzne typy príkazov a pomôcok na zjednodušenie každej úlohy. Na rozdiel od iných operačných systémov je nájdenie ľubovoľného súboru v systéme Linux jednoduché, pretože na vyhľadávanie akéhokoľvek súboru môžete použiť príkaz grep.

Na zobrazenie konkrétneho názvu súboru, ktorý obsahuje konkrétny vzor, ktorý hľadáte, môžete použiť príkaz grep. Existuje však niekoľko vecí, ktoré by ste mali dodržiavať pri používaní príkazu grep v systéme Linux −

  • Grep štandardne rozlišuje veľké a malé písmená. ,Preto musíte použiť voľbu -i, aby ste priradili vzor bez rozlišovania malých a veľkých písmen.

  • Ak chcete vyhľadať znak so špeciálnym významom pre shell, musíte v príkaze grep použiť úvodzovky.

  • Príkaz Grep zobrazí celý riadok, ktorý obsahuje konkrétny znak. Takže musíte použiť voľbu -o len na zobrazenie názvu súboru a hľadaného znaku.

V tejto krátkej príručke použijeme grep na súbory, ktoré zodpovedajú špecifickým kritériám v systéme Linux.

Používanie programu Grep na súboroch, ktoré zodpovedajú špecifickým kritériám v systéme Linux

Príkaz grep je predinštalovaný vo väčšine distribúcií Linuxu. Poďme vytvoriť niekoľko vzorových súborov v adresári 'Documents' a nájsť v týchto súboroch reťazec alebo regulárny výraz.

~$: sudo tree Documents 
Documents
|__ sample1
|__ sample2
|__ sample3

0 directories, 3 files

Teraz budeme hľadať tieto vzorové súbory prostredníctvom rôznych možností príkazu grep v systéme Linux.

Vyhľadávanie v súboroch s rozlíšením malých a veľkých písmen

Spadá pod vyhľadávanie rozlišujúce veľké a malé písmená, ak musíte nájsť presné slová a vzory pomocou grep na súboroch.

grep <pattern> <filename1> <filename2>.....

Tu budeme hľadať slovo „unix“ medzi všetkými súbormi v adresári Documents.

Na tento účel použite nižšie uvedený príkaz −

~$: grep unix sample1 sample2 sample3
sample1:unix
sample3:unix operating system

Vyššie uvedený príkaz zodpovedá uvedenému vzoru a zobrazí súbory obsahujúce "unix".

Zhoda s vyhľadávaním bez rozlišovania malých a veľkých písmen v súboroch

Akýkoľvek vzor môžete vyhľadávať necitlivo pomocou voľby -i s vyššie uvedeným príkazom −

grep -i <pattern> <filename1> <filename2>.....

Ukážme všetky výsledky súvisiace s 'unix', ale terminál zobrazí všetky súbory obsahujúce 'Unix' alebo 'unix.'

~$: grep -i "unix" sample1 sample2 sample3
sample1:unix
sample1:Unix
sample2:Unix
sample3:unix operating system

Hľadá sa len zhodný vzor

Príkaz grep štandardne zobrazí celý odsek alebo riadok. Pomocou voľby -o s príkazom grep môžete zobraziť iba vzor namiesto celej pasáže alebo riadku.

grep -o "<pattern>" <filename>

Tu budeme hľadať "Linux" pomocou príkazu grep a jeho voľby -o −

~$: grep -o "Linux" sample1 sample3
sample1:Linux

Vyhľadávanie názvov súborov, ktoré sa zhodujú so vzorom

Ak chcete vyhľadať súbory obsahujúce konkrétny vzor alebo reťazec, použite nasledujúci príkaz −

grep -l "<pattern>" <filename1> <filename2>.....

alebo

grep -l "<pattern>" *

Napríklad príkaz nižšie zobrazí názov súboru v aktuálnom adresári obsahujúcom slovo „linux“ −

~$: grep -l "linux" *
sample1
sample3

Zodpovedajúce akémukoľvek vzoru

Pomocou nasledujúceho príkazu grep zobrazte v súboroch špecifické znaky, ktoré sa zhodujú s akýmkoľvek slovom, vzorom atď.

grep "..<letter_pattern>" <filename>

Nižšie uvedený príkaz zobrazuje vzory 'Linux' a 'Unix', ktoré končia na 'x.'

~$: grep "..x" sample1 sample3
sample2:Linux
sample2:Linux
sample2:Unix
sample3:linux
sample3:unix operating system.

Zhoda s invertujúcim vzorom

Môžete spárovať iba čiary, ktoré nie sú podobné uvedenému vzoru. V tomto prípade môžete použiť voľbu -v s príkazom grep nasledovne −

grep -v "<pattern>" <filename>

Napríklad budeme hľadať tie súbory, ktoré neobsahujú slovo „Linux“.

~$: grep -v "Linux" sample1 sample2 sample3
sample1:GNU operating system
sample1:gnu
sample1:Gnu
sample:unix
sample1:linux
sample1:unix
sample2:GNU
sample2:unix
sample3:linux
sample3:unix operating system.
sample3:gnu operating system.

Zhoda so vzorom, ktorý začína konkrétnym slovom/reťazcom

Vzor regulárneho výrazu '^' definuje začiatok pasáže alebo riadku. Pomocou nasledujúceho príkazu grep môžete zobraziť riadky začínajúce konkrétnym vzorom alebo reťazcom.

grep "^<pattern>" <filename>

V nasledujúcom príkaze použijeme príkaz grep na vyhľadávanie „gnu“ v súboroch −

~$: grep "^gnu" sample2 sample3
sample3:gnu operating system.

Zhoda so vzorom, ktorý končí konkrétnym slovom/reťazcom

Vzor regulárneho výrazu '$' definuje koniec pasáže/riadku. Pomocou tohto výrazu s príkazom grep môžete porovnať riadky alebo pasáže, ktoré končia uvedeným vzorom/slovom.

grep "<pattern>$" <filename>

Napríklad budeme hľadať „systém“ vo viacerých súboroch −

~$: grep "system$" sample1 sample2 sample3
sample3:unix operating system.
sample3:gnu operating system.

Rekurzívne párovanie so vzorom v adresári

Ak chcete priradiť vzor v rámci celého adresára namiesto konkrétnych súborov v adresári, môžete použiť voľbu -R s príkazom grep, ako je tento −

grep -R <pattern> <directory>

Teraz spustíme príkaz grep rekurzívne, aby sme našli "GNU" obsahujúce súbory v adresári Documents −

~$: grep -R GNU Documents
Documents/sample2:GNU
Documents/sample1:GNU operating system

Bonusový tip − Ak chcete nájsť zhodu so špecifickým vzorom medzi všetkými súbormi prítomnými v aktuálnom adresári, môžete tak urobiť pomocou voľby -w s príkazom grep takto −

grep -w <pattern> *

Priraďovanie súborov so špecifickými príponami

Na vyhľadanie vzoru v súboroch so špecifickou príponou v adresári použite nasledujúci príkaz

grep -R --include=*.<file_extention> '<pattern>' <directory>

V nižšie uvedenom príklade príkaz grep kontroluje uvedený vzor iba v súboroch s príponou '.txt'.

~$: grep -R --include=*.txt 'Linux' Documents
Documents/sample1.txt:Linux is a kernel

Poznámka − Vyššie uvedený príkaz môžete použiť aj na spárovanie vzorov v súboroch s viacerými príponami naraz.

Záver

Príkaz grep je vynikajúci spôsob, ako filtrovať súbory so špecifickými vzormi cez terminál v systéme Linux. V tejto príručke sme na rôznych príkladoch vysvetlili spôsoby priraďovania konkrétnych kritérií v súboroch. Použitie príkazu grep je veľmi jednoduché a môžete ho vidieť aj na niektorých z vyššie uvedených príkladov. Môžete teda použiť príkaz grep na vyhľadanie akéhokoľvek vzoru, riadku, slova atď. v Linuxe len niekoľkými kliknutiami.