GNU/Linux >> Znalost Linux >  >> Linux

50 Produktivní a praktický příkaz grep pro linuxové nadšence

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-english 

První 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-english

První 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-english

Tento 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-english 

První 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-english

První 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-english

Použ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-english

Doporuč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-english

Tí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-english

První 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-english

Tento 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/passwd

Výš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.txt

Nyní 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/*.c

Ve 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/hosts

Neznepokojujte 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-image

Tento 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/cpuinfo

V 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.log

Tento 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/hosts

Výš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.gz

Nejprve 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.txt

Od 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.txt

Vš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ům

Tento 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.txt

Vytváří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.txt

První 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.txt

Ač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 --version

49. 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 --help

Tento 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 grep

Konec 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.


Linux
  1. 10 návodů na příkazy Linuxu pro začátečníky a experty

  2. 10 praktických příkladů příkazů Grep pro vývojáře

  3. K čemu je Linux test – příkazový test?

  1. Příkaz wc pro Linux vysvětlený pro začátečníky (6 příkladů)

  2. 8 Praktické příklady příkazu Linux Xargs pro začátečníky

  3. 5 Praktické příklady Head Command v Linuxu

  1. Příkaz Ls v Linuxu (seznam souborů a adresářů)

  2. 10 příkladů příkazů Linux Cat pro začátečníky

  3. Linuxový příkaz grep