Nástroj grep v Linuxu a dalších systémech podobných Unixu je jedním z nejvýkonnějších nástrojů příkazového řádku, jaký byl kdy vyvinut. Pochází z doby ed command g/re/p a je vytvořen legendárním Kenem Thompsonem. Pokud jste ostřílený uživatel Linuxu, budete vědět, jak důležité jsou regulární výrazy při zpracování souborů. Mnoho začínajících uživatelů o nich však jednoduše nemá ponětí. Často jsme svědky toho, jak se uživatelům používání takových technik nelíbí. Většina příkazů grep však není tak složitá. Grep snadno zvládnete tím, že mu dáte trochu času. Pokud se chcete stát linuxovým guru, doporučujeme vám používat tento nástroj při každodenní práci s počítačem.
Základní příkazy grep pro moderní uživatele Linuxu
Jednou z nejkrásnějších věcí na příkazu grep v Linuxu je to, že jej můžete použít se všemi druhy věcí. Vzory můžete hledat přímo v souborech nebo ze standardního výstupu. Umožňuje uživatelům předávat výstupy jiných příkazů za účelem grep a vyhledání konkrétních informací. Následující příkazy budou obsahovat 50 takových příkazů.
Ukázkové soubory pro ilustraci Linuxových příkazů grep
Protože nástroj Linux grep funguje na souborech, nastínili jsme některé soubory, které můžete použít k procvičování. Většina distribucí Linuxu by měla obsahovat nějaké soubory slovníku v adresáři /usr/share/dict. Zde nalezený americko-anglický soubor jsme použili pro některé z našich demonstračních účelů. Vytvořili jsme také jednoduchý textový soubor obsahující následující.
toto je ukázkový soubor obsahuje sbírku řádků k demonstraci různých příkazů Linux grep
Pojmenovali jsme ho test.txt a použili v mnoha příkladech grep. Zde můžete zkopírovat text a použít stejný název souboru pro procvičování. Kromě toho jsme také využili soubor /etc/passwd.
Základní příklady grep
Protože příkaz grep umožňuje uživatelům získávat informace pomocí nepřeberného množství kombinací, začínající uživatelé jsou často zmateni jeho použitím. Ukážeme několik základních příkladů grep, které vám pomohou seznámit se s tímto nástrojem. Pomůže vám to naučit se v budoucnu pokročilejší příkazy.
1. Vyhledejte informace v jediném souboru
Jedním ze základních použití grep v Linuxu je vyhledání řádků obsahujících konkrétní informace ze souborů. Jednoduše zadejte vzor následovaný názvem souboru po grep, jak je znázorněno níže.
- -$ grep root /etc/passwd$ grep $USER /etc/passwd
První příklad zobrazí všechny řádky obsahující root v souboru /etc/passwd. Druhý příkaz zobrazí všechny takové řádky, které obsahují vaše uživatelské jméno.
2. Vyhledejte informace ve více souborech
Pomocí grep můžete tisknout řádky obsahující specifické vzory z více než jednoho souboru současně. Jednoduše zadejte všechny názvy souborů oddělené mezerou za vzorem. Zkopírovali jsme test.txt a vytvořil další soubor obsahující stejné řádky, ale s názvem test1.txt .
$ cp test.txt test1.txt$ soubor grep test.txt test1.txt
Nyní grep vytiskne všechny řádky obsahující soubor z obou souborů.
3. Tisknout pouze odpovídající část
Ve výchozím nastavení grep zobrazí celý řádek obsahující vzor. Tento výstup můžete potlačit a sdělit grep, aby zobrazil pouze odpovídající část. Takže grep vypíše pouze zadané vzory, pokud existují.
$ grep -o $USER /etc/passwd$ grep --pouze-odpovídající $USER /etc/passwd
Tento příkaz vypíše hodnotu $USER jak se s tím grep mnohokrát setkává. Pokud nebude nalezena žádná shoda, výstup bude prázdný a grep se ukončí.
4. Ignorovat Case Matching
Ve výchozím nastavení bude grep hledat daný vzor s rozlišením malých a velkých písmen. Někdy si uživatel nemusí být jistý velikostí písmen. Můžete říct grep, aby v takových případech ignoroval velikost písmen vzoru, jak je ukázáno níže.
$ grep -i $USER /etc/passwd$ grep --ignore-case $USER /etc/passwd$ grep -y $USER /etc/passwd
To vrátí další řádek výstupu v mém terminálu. Stejné by to mělo být i ve vašem stroji. Poslední příkaz je zastaralý, takže jej nepoužívejte.
5. Invert Matching grep Patterns
Nástroj grep umožňuje uživatelům invertovat párování. To znamená, že grep vytiskne všechny řádky, které neobsahují daný vzor. Podívejte se na níže uvedený příkaz pro rychlý náhled.
$ grep -v soubor test.txt$ grep --invert-match soubor test.txt
Výše uvedené příkazy jsou ekvivalentní a tisknou pouze ty řádky, které neobsahují soubor.
6. Shodujte pouze celá slova
Obslužný program grep vytiskne libovolný řádek obsahující vzor. Vytiskne tedy také řádky, které mají vzor uvnitř libovolných slov nebo vět. Často budete chtít tyto hodnoty zahodit. Můžete to snadno provést pomocí volby -w, jak je uvedeno níže.
$ grep ahoj /usr/share/dict/american-english$ grep -w ahoj /usr/share/dict/american-english
Pokud je spustíte jeden po druhém, uvidíte rozdíl. V mém systému vrací první příkaz 5 řádků, zatímco druhý příkaz pouze dva.
7. Spočítejte Počet shoda
Často můžete jednoduše chtít počet nalezených shod pomocí nějakého vzoru. -c možnost je v takových situacích velmi užitečná. Když je použit, grep vrátí počet shod namísto tisku řádků. Tento příznak jsme přidali k výše uvedeným příkazům, abychom vám pomohli představit si, jak to funguje.
$ grep -c ahoj /usr/share/dict/american-english$ grep -c -w ahoj /usr/share/dict/american-english
Příkazy vrátí 5 a 2.
8. Zobrazit číslo řádku
Můžete zadat příkaz grep, aby zobrazil čísla řádků, kde byla nalezena shoda. Využívá index založený na 1, kde první řádek souboru je řádek číslo 1 a desátý řádek je řádek číslo 10. Podívejte se na níže uvedené příkazy, abyste pochopili, jak to funguje.
$ grep -n -w cat /usr/share/dict/american-english$ grep --line-number -w cat /usr/share/dict/american-english
Oba výše uvedené příkazy vytisknou řádky obsahující slovo cat v americko-anglickém slovníku.
9. Potlačit předpony názvů souborů
Pokud znovu spustíte příklady druhého příkazu, všimnete si, že grep předponuje výstupu názvy souborů. Často je možná budete chtít ignorovat nebo je úplně vynechat. Následující linuxové příkazy grep vám to ilustrují.
$ grep -h soubor test.txt test1.txt$ grep --no-filename soubor test.txt test1.txt
Oba výše uvedené příkazy jsou ekvivalentní, takže si můžete vybrat, co chcete. Vrátí pouze řádky se shodným vzorem, nikoli názvy souborů.
10. Zobrazit pouze předpony názvů souborů
Na druhou stranu, někdy můžete chtít pouze názvy souborů, které obsahují nějaký vzor. Můžete použít -l možnost pro toto. Dlouhá forma této možnosti je –files-with-matches .
$ grep -l cat /usr/share/dict/*-english$ grep --files-with-matches cat /usr/share/dict/*-english
Oba výše uvedené příkazy vytisknou názvy souborů, které obsahují vzor cat. Zobrazuje americko-anglické a britsko-anglické slovníky jako výstup grepu v mém terminálu.
11. Číst soubory rekurzivně
Můžete říct grep, aby četl všechny soubory v adresáři rekurzivně pomocí -r nebo –rekurzivní možnost . Tím se vytisknou všechny řádky, které obsahují shodu, a předpona jim názvy souborů, kde byly nalezeny.
$ grep -r -w cat /usr/share/dict
Tento příkaz vypíše všechny soubory, které spolu se svými názvy souborů obsahují slovo cat. Používáme umístění /usr/share/dict, protože již obsahuje více souborů slovníku. -R možnost může být použita pro povolení grepu procházet symbolické odkazy.
12. Zobrazit se shoduje s celým vzorem
Můžete také instruovat grep, aby zobrazil pouze ty shody, které obsahují přesnou shodu v celém řádku. Například níže uvedený příkaz vygeneruje řádky, které obsahují pouze slovo cat.
$ grep -r -x cat /usr/share/dict/$ grep -r --line-regexp cat /usr/share/dict/
Jednoduše vrátí tři řádky, které v mých slovnících obsahují jen kočku. Moje Ubuntu 19.10 má v adresáři /dict tři soubory obsahující slovo cat na jednom řádku.
Regulární výrazy v příkazu Linux grep
Jednou z nejpřesvědčivějších vlastností grepu je jeho schopnost pracovat se složitými regulárními výrazy. Viděli jsme pouze některé základní příklady grep ilustrující mnoho z jeho možností. Daleko náročnější je však schopnost zpracovávat soubory na základě regulárních výrazů. Protože regulární výrazy vyžadují důkladné technické studium, zůstaneme u jednoduchých příkladů.
13. Vyberte Shody na začátku
Pomocí grep můžete určit shodu pouze na začátku řádku. Tomu se říká ukotvení vzoru. Budete muset použít stříšku ‘^’ operátora pro tento účel.
$ grep "^cat" /usr/share/dict/american-english
Výše uvedený příkaz vytiskne všechny řádky v linuxovém americko-anglickém slovníku, které začínají na cat. Až do této části našeho průvodce jsme ke specifikaci našich vzorů nepoužili uvozovky. Nyní je však použijeme a doporučujeme vám je používat také.
14. Vyberte Shody na konci
Podobně jako u výše uvedeného příkazu můžete také ukotvit vzor tak, aby odpovídal čarám obsahujícím vzor na konci. Podívejte se na níže uvedený příkaz, abyste pochopili, jak to funguje v Linuxu grep.
$ grep "fish$" /usr/share/dict/american-english
Tento příkaz vytiskne všechny řádky, které končí na rybu. Všimněte si, jak jsme v tomto případě použili symbol $ na konci našeho vzoru.
15. Porovnejte jeden znak
Unixový obslužný program grep umožňuje uživatelům přiřadit jakýkoli jednotlivý znak jako součást vzoru. Tečka ‘.’ K tomuto účelu slouží operátor. Pro lepší pochopení se podívejte na níže uvedené příklady.
$ grep -x "c.t" /usr/share/dict/american-english
Tento příkaz vytiskne všechny řádky obsahující tři znaková slova začínající na c a končící na t. Pokud vynecháte -x možnost, výstup se opravdu zvětší, protože grep zobrazí všechny řádky, které mají jakoukoli kombinaci těchto znaků. Můžete použít dvojité .. specifikovat dva náhodné znaky a podobně.
16. Shoda ze sady znaků
Můžete si také vybrat ze sady znaků snadno pomocí závorek. Říká grepu, aby vybral znaky na základě určitých kritérií. K zadání těchto kritérií obvykle použijete regulární výrazy.
$ grep "c[aeiou]t" /usr/share/dict/american-english $ grep -x "m[aeiou]n" /usr/share/dict/american-english
První příklad vytiskne všechny řádky v americko-anglickém slovníku, které obsahují vzor c následovaný jednou samohláskou a znakem t. Následující příklad vypíše všechna přesná slova, která obsahují m následovaná samohláskou a poté n.
17. Shoda z řady znaků
Následující příkazy demonstrují, jak můžete pomocí grep spárovat z řady znaků. Vyzkoušejte si příkazy sami, abyste viděli, jak věci fungují.
$ grep "^[A-Z]" /usr/share/dict/american-english$ grep "[A-Z]$" /usr/share/dict/american-english
První příklad vytiskne všechny řádky, které začínají libovolným velkým písmenem. Druhý příkaz zobrazí pouze ty řádky, které končí velkým písmenem.
18. Vynechejte ve vzorcích znaky
Někdy možná budete chtít hledat vzory, které neobsahují nějaký specifický znak. V dalším příkladu vám ukážeme, jak to provést pomocí grep.
$ grep -w "[^c]at$" /usr/share/dict/american-english$ grep -w "[^c][aeiou]t" /usr/share/dict/american-englishPrvní příkaz zobrazí všechna slova končící na kromě cat. [^c] říká grepu, aby vynechal znak c z hledání. Druhý příklad říká grepu, aby zobrazil všechna slova, která končí samohláskou následovanou t a neobsahují c.
19. Seskupit znaky uvnitř vzoru
[] umožňuje zadat pouze jednu znakovou sadu. Ačkoli můžete pro specifikaci dalších znaků použít více sad závorek, není to vhodné, pokud již víte, o jaké skupiny znaků máte zájem. Naštěstí můžete použít () k seskupení více znaků ve vzorech.
$ grep -E "(kopie)" /usr/share/dict/american-english$ egrep "(kopie)" /usr/share/dict/american-englishPrvní příkaz vypíše všechny řádky, které obsahují kopii skupiny znaků. Znak -E příznak je povinný. Pokud chcete tento příznak vynechat, můžete použít druhý příkaz egrep. Je to prostě rozšířený front-end pro grep.
20. Zadejte volitelné znaky ve vzoru
Nástroj grep také umožňuje uživatelům specifikovat volitelné znaky pro jejich vzory. Budete muset použít “?“ symbol pro toto. Cokoli před tímto znakem bude ve vašem vzoru volitelné.
$ grep -E "(commu)?nist" /usr/share/dict/american-englishTento příkaz vypíše slovo komunista vedle všech řádků ve slovníku, které obsahují nist. Podívejte se, jak -E zde se používá možnost. Umožňuje grepu provádět složitější nebo rozšířené porovnávání vzorů.
21. Zadejte Opakování ve vzoru
Můžete určit, kolikrát musí být vzor spárován pro určité příkazy grep. Následující příkazy vám ukážou, jak vybrat počet znaků ze třídy pro vzory grep.
$ grep -E "[aeiou]{3}" /usr/share/dict/american-english$ grep -E "c[aeiou]{2}t" /usr/share/dict/american-englishPrvní příklad vytiskne všechny řádky, které obsahují tři samohlásky, zatímco na druhé straně poslední příklad vytiskne všechny řádky obsahující c následované 2 samohláskami a pak t.
22. Určete jedno nebo více opakování
Můžete také použít „+“ operátor zahrnutý v rozšířené sadě funkcí grep pro určení shody jednou nebo vícekrát. Podívejte se na následující příkazy, abyste viděli, jak to funguje v příkazu Linux grep.
$ egrep -c "[aeiou]+" /usr/share/dict/american-english$ egrep -c "[aeiou]{3}" /usr/share/dict/american-englishPrvní příkaz vypíše, kolikrát grep narazí na jednu nebo více po sobě jdoucích samohlásek. A druhý příkaz ukazuje, kolik řádků obsahuje tři po sobě jdoucí samohlásky. Měl by tam být velký rozdíl.
23. Určete dolní hranici pro opakování
Pro počet opakování zápasu si můžete vybrat jak vyšší, tak dolní hranici. Následující příklady demonstrují, jak vybrat dolní meze v akci.
$ egrep "[aeiou]{3,}" /usr/share/dict/american-englishPoužili jsme egrep místo grep -E pro výše uvedený příkaz. Vybere všechny řádky, které obsahují 3 nebo více po sobě jdoucích samohlásek.
24. Určete horní hranici pro opakování
Stejně jako u dolních hranic můžete grepu také říci, kolikrát má odpovídat nanejvýš určitým znakům. Následující příklad odpovídá všem řádkům v americko-anglickém slovníku, který obsahuje až 3 samohlásky.
$ egrep "[aeiou]{,3}" /usr/share/dict/american-englishDoporučujeme uživatelům používat pro tyto rozšířené funkce egrep, protože je o něco rychlejší a v dnešní době spíše konvence. Všimněte si umístění čárky ‘,‘ symbol ve dvou výše uvedených příkazech.
25. Určete horní a dolní hranici
Obslužný program grep také umožňuje uživatelům vybrat jak horní, tak dolní hranici pro opakování zápasů současně. Následující příkaz říká grepu, aby odpovídal všem slovům obsahujícím minimálně dvě a maximálně čtyři po sobě jdoucí samohlásky.
$ egrep "[aeiou]{2,4}" /usr/share/dict/american-englishTímto způsobem můžete zadat horní i dolní limit současně.
26. Vyberte Všechny znaky
Můžete použít zástupný znak ‚*‘ pro výběr všech nulových nebo více výskytů znakové třídy ve vašich vzorech grep. Podívejte se na další příklad, abyste pochopili, jak to funguje.
$ egrep "collect*" test.txt $ egrep "c[aeiou]*t /usr/share/dict/american-englishPrvní příklad vytiskne sbírku slov, protože je to jediné slovo, které se v souboru test.txt jednou nebo vícekrát shoduje s výrazem „collect“. soubor. Poslední příklad odpovídá všem řádkům obsahujícím c následované libovolným počtem samohlásek a poté t v linuxovém americko-anglickém slovníku.
27. Alternativní regulární výrazy
Nástroj grep umožňuje uživatelům specifikovat střídající se vzory. Můžete použít „|“ znak pro pokyn grep vybrat jeden ze dvou vzorů. Tento znak je v terminologii POSIX známý jako operátor infix. Podívejte se na níže uvedený příklad, abyste pochopili jeho účinek.
$ egrep "[AEIOU]{2}|[aeiou]{2}" /usr/share/dict/american-englishTento příkaz říká grep, aby odpovídal všem řádkům, které obsahují 2 po sobě jdoucí velké samohlásky nebo malé samohlásky.
28. Vyberte Pattern for Matching Alphanumeric Characters
Alfanumerické vzory obsahují jak číslice, tak písmena. Níže uvedené příklady ukazují, jak pomocí příkazu grep vybrat všechny řádky, které obsahují alfanumerické znaky.
$ egrep "[0-9A-Za-z]{3}" /usr/share/dict/american-english$ egrep "[[:alnum:]]{3}" /usr/share/dict/ americko-anglickýOba výše uvedené příkazy dělají totéž. Říkáme grepu, aby odpovídal všem řádkům obsahujícím tři po sobě jdoucí kombinace znaků 0-9, A-Z a a-z. Druhý příklad nás však ušetří od psaní specifikátoru vzoru sami. Tomu se říká speciální výraz a grep jich nabízí několik.
29. Útěk speciálních znaků
Doposud jsme používali mnoho speciálních znaků, jako jsou „$“, „^“ a „|“ pro definování rozšířených regulárních výrazů. Ale co když potřebujete porovnat některý z těchto znaků ve vašem vzoru. Naštěstí na to vývojáři grep už mysleli a umožňují uniknout těmto speciálním znakům pomocí zpětného lomítka “\“ .
$ egrep "\-" /etc/passwdVýše uvedený příkaz odpovídá všem řádkům souboru /etc/passwd soubor proti pomlčce „-“ znak a vytiskne je. Tímto způsobem můžete ukončit jakékoli další speciální znaky pomocí zpětného lomítka.
30. Opakujte vzory grep
„*“ jste již použili zástupný znak pro výběr řetězců znaků ve vzorech. Následující příkaz vám ukáže, jak vytisknout všechny řádky, které začínají závorkami a obsahují pouze písmena a jeden prázdný znak. Použijeme „*“ to udělat.
$ egrep "([A-Za-z ]*)" test.txtNyní přidejte do ukázkového souboru test.txt několik řádků v závorkách a spusťte tento příkaz. S tímto příkazem byste se již měli seznámit.
Linuxové příkazy grep v každodenní práci s počítačem
Jedna z nejlepších věcí na grep je jeho univerzální použitelnost. Tento příkaz můžete použít k odfiltrování důležitých informací při spouštění důležitých příkazů terminálu Linux. Ačkoli níže uvedená část poskytuje rychlý pohled na některé z nich, základní principy můžete použít kdekoli.
31. Zobrazit všechny podadresáře
Následující příkaz ukazuje, jak můžeme použít grep ke spárování všech složek v adresáři. K zobrazení obsahu adresáře ve standardním výstupu používáme příkaz ls -l a ořezáváme odpovídající řádky pomocí grep.
$ ls -l ~ | grep "drw"Protože všechny adresáře v Linuxu obsahují vzor drw na jejich začátku to používáme jako náš vzor pro grep.
32. Zobrazit všechny soubory MP3
Následující příkaz ukazuje, jak používat grep k vyhledání souborů mp3 na vašem počítači se systémem Linux. Zde znovu použijeme příkaz ls.
$ ls /cesta/k/hudbě/adresář/ | grep ".mp3"Nejprve ls vytiskne obsah vašeho hudebního adresáře na výstup a pak grep porovná všechny řádky, které obsahují .mp3. Výstup ls neuvidíte, protože jsme tato data přenesli přímo do grepu.
33. Hledat text v souborech
Můžete také použít grep k vyhledávání konkrétních textových vzorů v jednom souboru nebo kolekci souborů. Předpokládejme, že chcete najít všechny soubory programu C, které obsahují text main v nich. Nedělejte si s tím starosti, vždycky se na to můžete vykašlat.
$ grep -l 'main' /cesta/k/souborům/*.cVe výchozím nastavení by měl grep barevně označit odpovídající část, aby vám pomohla snadno vizualizovat vaše zjištění. Pokud to však na vašem počítači se systémem Linux selže, zkuste přidat –color možnost k vašemu příkazu.
34. Najděte síťoví hostitelé
Soubor /etc/hosts obsahuje informace jako IP hostitele a název hostitele. Pomocí příkazu grep můžete najít konkrétní informace z tohoto záznamu pomocí příkazu níže.
$ grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /etc/hostsNeznepokojujte se, pokud vzor nedostanete hned. Když si to rozeberete jeden po druhém, je to velmi snadné pochopit. Ve skutečnosti tento vzor hledá všechny shody v rozsahu 0.0.0.0 a 999.999.999.999. Můžete také vyhledávat pomocí názvů hostitelů.
35. Najděte nainstalované balíčky
Linux stojí nad několika knihovnami a balíčky. Nástroj příkazového řádku dpkg umožňuje administrátorům ovládat balíčky v distribucích Linuxu založených na Debianu, jako je Ubuntu. Níže uvidíte, jak používáme grep k odfiltrování základních informací o balíčku pomocí dpkg.
$ dpkg --list | grep "chrome"V mém počítači přináší několik užitečných informací, včetně čísla verze, architektury a popisu prohlížeče Google Chrome. Můžete jej použít pro vyhledání informací o balíčcích nainstalovaných ve vašem systému.
36. Najít dostupné linuxové obrázky
Znovu používáme nástroj grep s příkazem dpkg, abychom našli všechny dostupné obrázky Linuxu. Výstup tohoto příkazu se bude v různých systémech značně lišit.
$ dpkg --list | grep linux-imageTento příkaz jednoduše vytiskne výsledek dpkg –list a předá jej grep. Poté se shoduje se všemi řádky pro daný vzor.
37. Najděte informace o modelu CPU
Níže uvedený příkaz ukazuje, jak najít informace o modelu CPU v systémech založených na Linuxu pomocí příkazu grep.
$ cat /proc/cpuinfo | grep -i 'model'$ grep -i "model" /proc/cpuinfoV prvním příkladu jsme převedli výstup cat /proc/cpuinfo do grep a porovnali všechny řádky obsahující slovo model. Nicméně, protože /proc/cpuinfo je sám o sobě soubor, můžete na něj přímo použít grep, jak ukazuje druhý příklad.
38. Najděte informace protokolu
Linux nám systémovým administrátorům ukládá nejrůznější logy do adresáře /var. Z těchto souborů protokolu můžete snadno získat užitečné informace. Níže uvedený příkaz ukazuje jednoduchý takový příklad.
$ grep -i "cron" /var/log/auth.logTento příkaz zkontroluje soubor /var/log/auth.log, zda neobsahuje potenciální řádky, které obsahují informace o úlohách Linux CRON. -i flag nám umožňuje být flexibilnější. Spuštěním tohoto příkazu zobrazíte všechny řádky se slovem CRON v souboru auth.log.
39. Najděte informace o procesu
Následující příkaz ukáže, jak můžeme najít užitečné informace pro systémové procesy pomocí grep. Proces je spuštěná instance programu na počítačích se systémem Linux.
$ ps auxww | grep 'guake'Tento příkaz vytiskne všechny informace související s guake balík. Zkuste s nějakým jiným balíčkem, pokud guake není ve vašem počítači k dispozici.
40. Vyberte možnost Pouze platné IP
Dříve jsme pro shodu IP adres z /etc/hosts používali relativně jednodušší regulární výraz soubor. Tento příkaz by však také odpovídal mnoha neplatným IP adresám, protože platné IP adresy mohou nabývat pouze hodnot z rozsahu (1-255) v každém z jejich čtyř kvadrantů.
$ egrep '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}( 25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' /etc/hostsVýše uvedený příkaz nevytiskne žádné neplatné IP adresy, jako je 999.999.999.999.
41. Hledat uvnitř komprimovaných souborů
Front-end zgrep linuxového příkazu grep nám umožňuje špičkové vyhledávání vzorů přímo v komprimovaných souborech. Pro lepší pochopení se rychle podívejte na následující úryvky kódu.
$ gzip test.txt$ zgrep -i "sample" test.txt.gzNejprve komprimujeme test.txt soubor pomocí gzip a poté pomocí zgrep k vyhledání vzorku slova.
42. Počítat Počet prázdných řádků
Počet prázdných řádků v souboru můžete snadno spočítat pomocí grep, jak ukazuje následující příklad.
$ grep -c "^$" test.txtOd test.txt obsahuje pouze jeden prázdný řádek, tento příkaz vrátí 1. Prázdné řádky jsou porovnány pomocí regulárního výrazu “^$“ a jejich počet se vytiskne pomocí -c možnost.
43. Najít více vzorů
Doposud jsme se soustředili na nalezení jediného vzoru. Nástroj grep také umožňuje uživatelům vyhledávat čáry s více vzory současně. Podívejte se na níže uvedené příklady příkazů, abyste viděli, jak to funguje.
$ grep -e 'vzorek' -e 'soubor' test.txt$ grep -e 'vzorek' test.txt | grep -e 'soubor'$ grep -e 'vzorek\| soubor' test.txtVšechny výše uvedené příkazy vytisknou řádky, které obsahují „sample“ i „file“.
44. Porovnejte platné e-mailové adresy
Mnoho zkušených programátorů si rádo ověřuje uživatelský vstup sám. Naštěstí je velmi snadné ověřit vstupní data, jako je IP a e-maily, pomocí regulárních výrazů grep. Následující příkaz bude odpovídat všem platným e-mailovým adresám.
$ grep -E -o "\b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za- z]{2,6}\b" /cesta/k/datůmTento příkaz je mimořádně účinný a snadno odpovídá až 99 % platných e-mailových adres. Pro urychlení procesu můžete použít egrep.
Různé příkazy grep
Nástroj grep nabízí mnoho dalších užitečných kombinací příkazů, které umožňují další operace s daty. V této části diskutujeme o několika málo používaných, ale nezbytných příkazech.
45. Vyberte Vzory ze souborů
Vzory regulárních výrazů pro grep můžete vybrat z předdefinovaných souborů poměrně snadno. Použijte -f možnost pro toto.
$ echo "sample"> soubor$ grep -f soubor test.txtVytváříme vstupní soubor obsahující jeden vzor pomocí příkazu echo. Druhý příkaz demonstruje vstup souboru pro grep.
46. Ovládací kontexty
Kontext výstupu grepu můžete snadno ovládat pomocí voleb -A , -B a -C . Následující příkazy je ukazují v akci.
$ grep -A2 'soubor' test.txt$ grep -B2 'soubor' test.txt$ grep -C3 'Linux' test.txtPrvní příklad ukazuje další 2 řádky po zápase, druhý příklad ukazuje předchozí 2 a poslední příklad ukazuje oba.
47. Potlačit chybové zprávy
-s Tato možnost umožňuje uživatelům potlačit výchozí chybové zprávy zobrazené grep v případě neexistujících nebo nečitelných souborů.
$ grep -s 'soubor' testing.txt$ grep −−no-messages 'soubor' testing.txtAčkoli neexistuje žádný soubor s názvem testing.txt v mém pracovním adresáři grep pro tento příkaz nevydává žádnou chybovou zprávu.
48. Zobrazit informace o verzi
Nástroj grep je mnohem starší než samotný Linux a pochází z počátků Unixu. Pokud chcete získat informace o verzi grepu, použijte další příkaz.
$ grep -V$ grep --version49. Zobrazit stránku nápovědy
Stránka nápovědy pro grep obsahuje souhrnný seznam všech dostupných funkcí. Pomáhá překonat mnoho problémů přímo z terminálu.
$ grep --helpTento příkaz vyvolá stránku nápovědy pro grep.
50. Nahlédněte do dokumentace
Dokumentace grep je extrémně podrobná a poskytuje důkladný úvod do dostupných funkcí a použití regulárních výrazů. Můžete se podívat na manuálovou stránku pro grep pomocí níže uvedeného příkazu.
$ man grepKonec myšlenek
Vzhledem k tomu, že můžete vytvořit jakoukoli kombinaci příkazů pomocí robustních možností CLI grep, je těžké zapouzdřit vše o příkazu grep do jediného průvodce. Naši redaktoři se však ze všech sil snažili nastínit téměř každý praktický příklad grepu, abyste se v něm mnohem lépe zorientovali. Doporučujeme vám procvičit si co nejvíce z těchto příkazů a najít způsoby, jak začlenit grep do vašeho každodenního zpracování souborů. I když se můžete každý den potýkat s novými překážkami, je to jediný způsob, jak skutečně zvládnout linuxový příkaz grep.
40 užitečných příkazů linuxového serveru pro začátečníky a profesionály 50 základních příkazů Nmap pro systémové administrátoryLinux