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.