Nástroj grep v systému Linux a dalších systémech podobných systému Unix je jedním z nejsilnějších nástrojů příkazového řádku, jaký byl kdy vyvinut. Jeho počátky sahají do ed příkazu g / re / p a je vytvořen legendárním Kenem Thompsonem. Pokud jste ostříleným uživatelem systému Linux, budete znát důležitost regulárních výrazů při zpracování souborů. Mnoho začínajících uživatelů však o nich prostě nemá ponětí. Často vidíme, jak je uživatelům používání těchto technik nepříjemné. Většina příkazů grep však není tak složitá. Grep můžete snadno zvládnout tím, že mu dáte nějaký čas. Pokud se chcete stát linuxovým guru, doporučujeme vám tento nástroj využít v každodenních výpočtech.
Základní příkazy grep pro moderní uživatele systému Linux
Jednou z nejkrásnějších věcí na příkazu Linux grep je, že jej můžete použít se všemi možnými věcmi. Vzorky můžete grepovat přímo v souborech nebo ze standardního výstupu. Umožňuje uživatelům posílat výstupy jiných příkazů na grep a vyhledávat konkrétní informace. Následující příkazy budou obsahovat 50 takových příkazů.
Demo soubory pro ilustraci příkazů grep Linuxu
Vzhledem k tomu, že obslužný program Linux grep funguje na souborech, nastínili jsme některé soubory, které můžete procvičit. Většina distribucí Linuxu by měla obsahovat některé soubory slovníků v adresáři / usr / share / dict. Zde nalezený americko-anglický soubor jsme použili pro některé naše demonstrační účely. Také jsme vytvořili jednoduchý textový soubor obsahující následující.
toto je ukázkový soubor, který obsahuje kolekci řádků pro demonstraci různých příkazů grep Linuxu
Pojmenovali jsme to test.txt a použili v mnoha příkladech grep. Text můžete zkopírovat z tohoto místa a použít procvičování stejného názvu souboru. Dále jsme také využili soubor / etc / passwd.
Základní grep příklady
Vzhledem k tomu, že příkaz grep umožňuje uživatelům vykopat informace pomocí spousty kombinací, začínající uživatelé jsou často zaměňováni s jejich použitím. Ukážeme několik základních grepových příkladů, které vám pomohou seznámit se s tímto nástrojem. Pomůže vám to naučit se pokročilejší příkazy v budoucnu.
1. Vyhledejte informace v jednom souboru
Jedním ze základních použití grepu v Linuxu je vyhledání řádků obsahujících konkrétní informace ze souborů. Jednoduše zadejte vzor následovaný názvem souboru po grepu, 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 řádky, které obsahují vaše uživatelské jméno.
2. Vyhledejte informace ve více souborech
Grep můžete použít k tisku řádků obsahujících konkrétní vzory z více než jednoho souboru současně. Jednoduše zadejte všechny názvy souborů oddělené mezerami za vzorem. Zkopírovali jsme test.txt a vytvořil další soubor obsahující stejné řádky, ale pojmenovaný test1.txt.
$ cp test.txt test1.test souboru txt $ grep.txt test1.txt
Nyní grep vytiskne všechny řádky obsahující soubor z obou souborů.
3. Tisk pouze odpovídající části
Ve výchozím nastavení grep zobrazí celý řádek obsahující vzor. Tento výstup můžete potlačit a říct grepu, aby zobrazoval pouze shodnou část. Grep tedy vygeneruje pouze určené vzory, pokud existují.
$ grep -o $ USER / etc / passwd $ grep - pouze odpovídající $ USER / etc / passwd
Tento příkaz vygeneruje hodnotu $ USER kolikrát se s tím grep setká. Pokud není nalezena žádná shoda, výstup bude prázdný a grep bude ukončen.
4. Ignorovat porovnávání případů
Ve výchozím nastavení bude grep vyhledávat daný vzor způsobem rozlišujícím velká a malá písmena. Někdy si uživatel nemusí být jistý případem vzoru. Můžete říct grepu, aby v takových případech ignoroval případ vzoru, jak je ukázáno níže.
$ grep -i $ USER / etc / passwd $ grep --ignore-case $ USER / etc / passwd $ grep -y $ USER / etc / passwd
Tím se vrátí další řádek výstupu v mém terminálu. Mělo by to být stejné i ve vašem zařízení. Poslední příkaz je zastaralý, takže ho nepoužívejte.
5. Invertovat odpovídající grepové vzory
Nástroj grep umožňuje uživatelům invertovat shodu. To znamená, že grep vytiskne všechny řádky, které neobsahují daný vzor. Pro rychlé zobrazení se podívejte na níže uvedený příkaz.
$ grep -v test souboru.txt $ grep --invert-match test souborů.txt
Výše uvedené příkazy jsou ekvivalentní a tisknou pouze ty řádky, které neobsahují soubor.
6. Porovnávat pouze celá slova
Obslužný program grep vytiskne všechny řádky obsahující vzor. Bude tedy také tisknout řádky, které mají vzor uvnitř libovolných slov nebo vět. Často budete chtít tyto hodnoty zahodit. Můžete to snadno udělat pomocí volby -w, jak je znázorněno níže.
$ grep ahoj / usr / share / dict / americko-anglický $ grep -w ahoj / usr / share / dict / americko-anglický
Pokud je spustíte jeden po druhém, uvidíte rozdíl. V mém systému první příkaz vrátí 5 řádků, zatímco druhý příkaz pouze dva.
7. Spočítejte počet shod
Často můžete jednoduše chtít počet nalezených shod pomocí nějakého vzoru. The -C možnost je v takových situacích velmi užitečná. Když je použit, grep vrátí počet shod místo tisku řádků. Tento příznak jsme přidali k výše uvedeným příkazům, abychom vám pomohli vizualizovat, jak to funguje.
$ grep -c ahoj / usr / share / dict / americko-anglický $ grep -c -w ahoj / usr / share / dict / americko-anglický
Příkazy vrátí 5, respektive 2.
8. Zobrazit číslo řádku
Můžete instruovat 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 / americko-anglický $ grep - line-number -w cat / usr / share / dict / americko-anglický
Oba výše uvedené příkazy vytisknou v americko-anglickém slovníku řádky, které obsahují slovo cat.
9. Potlačit předpony názvu souboru
Pokud znovu spustíte příklady druhého příkazu, zjistíte, že grep předponu výstupu s názvy souborů. Často je budete chtít ignorovat nebo úplně vynechat. Ilustrují to následující příkazy Linux grep.
$ grep -h test souboru.txt test1.txt $ grep - test souboru bez názvu souboru.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ázvu souboru
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. Dlouhá forma této možnosti je -soubory se shodami.
$ grep -l cat / usr / share / dict / * - anglicky $ grep --soubory se shodami cat / usr / share / dict / * - anglicky
Oba výše uvedené příkazy vytisknou názvy souborů, které obsahují vzorovou kočku. Ukazuje americko-anglický a britsko-anglický slovník jako výstup grepu v mém terminálu.
11. Číst soubory rekurzivně
Můžete říct grepu, aby rekurzivně četl všechny soubory v adresáři pomocí -r nebo -rekurzivní možnost. Tím se vytisknou všechny řádky, které obsahují shodu, a předpona s názvy souborů, kde byly nalezeny.
$ grep -r -w cat / usr / share / dict
Tento příkaz vygeneruje všechny soubory, které v něm obsahují slovo kočka, spolu s jejich názvy souborů. Používáme umístění / usr / share / dict, protože již obsahuje více souborů slovníku. The -R Tuto možnost lze použít k povolení grepu procházet symbolickými odkazy.
12. Zobrazit shody s celým vzorem
Můžete také dát pokyn grepu, aby zobrazoval 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 kočka.
$ 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í pouze kočku. Můj Ubuntu 19.10 má tři soubory v adresáři / dict obsahující slovo cat v jednom řádku.
Regulární výrazy v příkazu Linux grep
Jednou z nejpřesvědčivějších funkcí grepu je jeho schopnost pracovat se složitými regulárními výrazy. Viděli jsme pouze několik základních grepových příkladů ilustrujících mnoho z jeho možností. Schopnost zpracovávat soubory založené na regulárních výrazech je však mnohem náročnější. Protože regulární výrazy vyžadují důkladné technické studium, zůstaneme u jednoduchých příkladů.
13. Vyberte Zápasy na začátku
Můžete použít grep k určení shody pouze na začátku řádku. Tomu se říká ukotvení vzoru. Budete muset použít stříška '^' provozovatel za tímto účelem.
$ grep "^ kočka" / usr / share / dict / americko-anglický
Výše uvedený příkaz vytiskne všechny řádky v americko-anglickém slovníku Linuxu, který začíná cat. Až do této části našeho průvodce jsme nepoužívali uvozovky k upřesnění našich vzorů. Nyní je však použijeme a doporučujeme vám je také použít.
14. Na konci vyberte Zápasy
Podobně jako výše uvedený příkaz můžete také ukotvit svůj vzor tak, aby odpovídal řádků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 / americko-anglický
Tento příkaz vytiskne všechny řádky, které končí rybou. Všimněte si, jak jsme v tomto případě použili symbol $ na konci našeho vzoru.
15. Porovnejte jeden znak
Unix grep obslužný program umožňuje uživatelům přiřadit libovolný znak jako součást vzoru. Tečka ''.'' k tomuto účelu se používá operátor. Pro lepší pochopení se podívejte na níže uvedené příklady.
$ grep -x "c.t "/ usr / share / dict / americko-anglický
Tento příkaz vytiskne všechny řádky obsahující tři znaková slova začínající c a končící t. Pokud vynecháte -X Volba, výstup bude opravdu velký, protože grep zobrazí všechny řádky, které mají libovolnou kombinaci těchto znaků. Můžete použít double … určit dva náhodné znaky a podobně.
16. Zápas ze sady postav
Můžete také vybrat ze sady znaků snadno pomocí závorek. Řekne grep, aby vybral znaky na základě některých kritérií. K určení těchto kritérií obvykle použijete regulární výrazy.
$ grep "c [aeiou] t" / usr / share / dict / americko-anglický $ grep -x "m [aeiou] n" / usr / share / dict / americko-anglický
První příklad vytiskne všechny řádky v americko-anglickém slovníku, které obsahují vzor c následovaný jedinou samohláskou a znak t. Následující příklad vytiskne všechna přesná slova, která obsahují m, následovaná samohláskou a poté n.
17. Zápas z řady postav
Následující příkazy předvedou, jak můžete pomocí grepu porovnávat z řady znaků. Vyzkoušejte si příkazy sami, abyste zjistili, jak věci fungují.
$ grep "^ [A-Z]" / usr / share / dict / americko-anglický $ grep "[A-Z] $" / usr / share / dict / americko-anglický
První příklad vytiskne všechny řádky, které začínají velkým písmenem. Druhý příkaz zobrazí pouze ty řádky, které končí velkým písmenem.
18. Vynechat znaky ve vzorech
Někdy budete chtít hledat vzory, které neobsahují nějaký konkrétní znak. V dalším příkladu vám ukážeme, jak to udělat pomocí grepu.
$ grep -w "[^ c] na $" / usr / share / dict / americko-anglické $ grep -w "[^ c] [aeiou] t" / usr / share / dict / americko-anglické
První příkaz zobrazí všechna slova končící na kromě kat. The [^ c] řekne grepu, aby vynechal znak c z jeho hledání. Druhý příklad říká grepu, aby zobrazil všechna slova, která končí samohláskou následovanou t a neobsahuje c.
19. Seskupte znaky uvnitř vzoru
[] Umožňuje zadat pouze jednu znakovou sadu. I když pro určení dalších znaků můžete použít více sad závorek, není vhodné, pokud již víte, o které skupiny znaků máte zájem. Naštěstí můžete použít () ke seskupení více znaků ve vašich vzorech.
$ grep -E "(copy)" / usr / share / dict / americko-anglický $ egrep "(copy)" / usr / share / dict / americko-anglický
První příkaz vypíše všechny řádky, které mají kopii skupiny znaků. The -E vlajka 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. Určete volitelné znaky ve vzoru
Obslužný program grep také umožňuje uživatelům určit pro jejich vzory volitelné znaky. Budete muset použít "?“ symbol pro toto. Cokoli před tímto znakem bude ve vašem vzoru volitelný.
$ grep -E "(komuna)?nist "/ usr / share / dict / americko-anglický
Tento příkaz vytiskne slovo komunista vedle všech řádků ve slovníku, který v nich obsahuje 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. Určete opakování ve vzoru
Můžete určit, kolikrát je třeba vzor shodovat pro určité příkazy grep. Následující příkazy ukazují, jak vybrat počet znaků ve třídě pro grep vzory.
$ grep -E "[aeiou] 3" / usr / share / dict / americko-anglický $ grep -E "[aeiou] 3" / usr / share / dict / americko-anglický
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, pak t.
22. Určete jedno nebo více opakování
Můžete také použít „+“ operátor zahrnutý v rozšířené sadě funkcí grepu pro určení shody jednou nebo vícekrát. Podívejte se na následující příkazy a podívejte se, jak to funguje v příkazu Linux grep.
$ egrep -c "[aeiou] +" / usr / share / dict / americko-anglický $ egrep -c "[aeiou] 3" / usr / share / dict / americko-anglický
První příkaz vytiskne, 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ěla by existovat velká rozdíl.
23. Určete dolní mez pro opakování
Pro počet opakování shody můžete vybrat horní i dolní mez. Následující příklady ukazují, jak vybrat dolní meze v akci.
$ egrep "[aeiou] 3," / usr / share / dict / americko-anglický
Použili jsme egrep namísto grep -E pro výše uvedený příkaz. Vybírá 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 nižších mezí můžete také grep říct, kolikrát se má maximálně shodovat s určitými znaky. 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 / americko-anglický
Doporučujeme uživatelům použít egrep pro tyto rozšířené funkce, protože je dnes o něco rychlejší a spíše konvenční. Všimněte si umístění čárky ',' symbol ve dvou výše uvedených příkazech.
25. Určete horní a dolní mez
Nástroj grep také umožňuje uživatelům vybrat horní i dolní mez pro opakování shody 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 / americko-anglický
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 nula nebo více výskytů třídy znaků 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 / americko-anglický
První příklad vytiskne kolekci slov, protože je to jediné slovo, které odpovídá 'collect' jednou nebo vícekrát v test.txt soubor. Poslední příklad odpovídá všem řádkům obsahujícím c následovaným libovolným počtem samohlásek, poté t v americko-anglickém slovníku Linuxu.
27. Alternativní regulární výrazy
Nástroj grep umožňuje uživatelům určit alternativní vzory. Můžete použít „|“ znak pro příkaz grep k výběru jednoho 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 / americko-anglický
Tento příkaz říká grepu, aby odpovídal všem řádkům, které obsahují buď 2 po sobě jdoucí velké samohlásky nebo malé samohlásky.
28. Vyberte vzor pro shodu alfanumerických znaků
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 / americko-anglický $ egrep "[[: alnum:]] 3" / usr / share / dict / americko-anglický
Oba výše uvedené příkazy dělají totéž. Říkáme grep, 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 zachrání před samotným psaním specifikátoru vzoru. Tomu se říká speciální výraz a grep nabízí několik z nich.
29. Unikněte zvláštním postavám
Dosud jsme používali mnoho speciálních znaků, například „$“, „^“ a „|“ pro definování rozšířených regulárních výrazů. Ale co když potřebujete sladit některou z těchto postav ve vašem vzoru. Naštěstí to už vývojáři grepu 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 uniknout jakýmkoli dalším speciálním znakům pomocí zpětného lomítka.
30. Opakujte grepové vzory
Už jste použili „*“ zástupný znak pro výběr řetězců znaků ve vzorech. Následující příkaz ukazuje, jak vytisknout všechny řádky, které začínají závorkami a obsahují pouze písmena a jednotlivé mezery. Použijeme „*“ udělat toto.
$ egrep "([A-Za-z] *)" test.txt
Nyní přidejte několik řádků uzavřených v závorkách do ukázkového souboru test.txt a spusťte tento příkaz. Tento příkaz by měl být již na spadnutí.
Linux grep Příkazy v každodenních výpočtech
Jednou z nejlepších věcí na grepu je jeho univerzální použitelnost. Tento příkaz můžete použít k odfiltrování základních informací při spouštění důležitých příkazů terminálu systému 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 ilustruje, jak můžeme pomocí grepu porovnat všechny složky v adresáři. Příkaz ls -l používáme k zobrazení obsahu adresáře ve standardním výstupu a řezání odpovídajících řádků pomocí grep.
$ ls -l ~ | grep "drw"
Protože všechny adresáře v Linuxu obsahují vzor drw na začátku to používáme jako vzor pro grep.
32. Zobrazit všechny soubory MP3
Následující příkaz ukazuje, jak použít grep k vyhledání souborů mp3 ve vašem počítači se systémem Linux. Zde znovu použijeme příkaz ls.
$ ls / cesta / do / hudba / adresář / | grep ".mp3 "
První, je vytiskne obsah vašeho hudebního adresáře na výstup a poté grep bude odpovídat všem řádkům, které obsahují .mp3 v nich. Neuvidíte výstup ls, protože jsme tato data poslali přímo na grep.
33. Hledání textu v souborech
Můžete také použít grep k vyhledání konkrétních textových vzorů v jediném souboru nebo kolekci souborů. Předpokládejme, že chcete vyhledat všechny soubory programu C, které obsahují text hlavní v nich. S tím si nedělejte starosti, vždy to můžete pozdravit.
$ grep -l 'main' / cesta / k / souborům / *.C
Ve výchozím nastavení by grep měl barevně kódovat část shody, aby vám pomohl snadno vizualizovat vaše nálezy. Pokud se to však ve vašem počítači se systémem Linux nezdaří, zkuste přidat -barva možnost na váš příkaz.
34. Najděte síťové hostitele
Soubor / etc / hosts obsahuje informace, jako je IP hostitele a název hostitele. Můžete použít grep k vyhledání konkrétních informací z této položky pomocí níže uvedeného příkazu.
$ grep -E -o "([0-9] 1,3 [\.]) 3 [0-9] 1,3 "/ etc / hosts
Nebojte se, pokud vzor nedostanete hned. Pokud to rozdělíte jeden po druhém, je to velmi snadné pochopit. Ve skutečnosti tento vzor vyhledává 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 sedí na několika knihovnách a balíčcích. Nástroj příkazového řádku dpkg umožňuje správců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 - seznam | grep "chrom"
Přináší několik užitečných informací v mém stroji, včetně čísla verze, architektury a popisu prohlížeče Google Chrome. Můžete jej použít k vyhledání informací o balíčcích nainstalovaných ve vašem systému podobně.
36. Najděte dostupné obrázky Linuxu
Ještě jednou používáme nástroj grep s příkazem dpkg, abychom našli všechny dostupné obrazy Linuxu. Výstup tohoto příkazu se bude v různých systémech značně lišit.
$ dpkg - seznam | grep linux-image
Tento příkaz jednoduše vytiskne výsledek dpkg -list a přenese ho na grep. Poté odpovídá všem řádkům pro daný vzor.
37. Najděte informace o modelu pro CPU
Níže uvedený příkaz ukazuje, jak vyhledat informace o modelu CPU v systémech založených na systému Linux pomocí příkazu grep.
$ cat / proc / cpuinfo | grep -i 'model' $ grep -i "model" / proc / cpuinfo
V prvním příkladu jsme pipovali výstup cat / proc / cpuinfo na grep a uzavřeli všechny řádky obsahující slovní model. Nicméně od té doby / proc / cpuinfo je sám o sobě soubor, můžete na něj použít grep přímo, jak ukazuje druhý příklad.
38. Najděte informace o protokolu
Linux pro nás správce systému ukládá všechny druhy protokolů do adresáře / var. Z těchto souborů protokolu můžete snadno získat užitečné informace. Následující příkaz ukazuje jednoduchý příklad.
$ grep -i "cron" / var / log / autor.log
Tento příkaz zkontroluje / var / log / auth.soubor protokolu pro potenciální řádky, které obsahují informace o úlohách systému Linux CRON. The -i vlajka nám umožňuje být pružnější. Spuštěním tohoto příkazu se zobrazí všechny řádky se slovem CRON v autorizaci.log soubor.
39. Najděte informace o procesu
Další příkaz předvede, jak můžeme pomocí grepu vyhledat užitečné informace pro systémové procesy. Proces je spuštěná instance programu na strojích s Linuxem.
$ ps auxww | grep 'guake'
Tento příkaz vytiskne všechny informace související s hádej balík. Zkuste s jiným balíčkem, pokud hádej není ve vašem přístroji k dispozici.
40. Vyberte pouze platné adresy IP
Dříve jsme použili relativně jednodušší regulární výraz pro porovnávání IP adres z / etc / hosts soubor. Tento příkaz by však také odpovídal mnoha neplatným adresám IP, protože platné adresy IP mohou nabývat pouze hodnot z rozsahu (1–255) v každém ze svých č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é adresy IP, například 999.999.999.999.
41. Hledat v komprimovaných souborech
Přední část zgrep příkazu Linux grep nám umožňuje nejlepší vyhledávání vzorů přímo v komprimovaných souborech. Pro lepší pochopení se krátce podívejte na následující fragmenty kódu.
$ gzip test.txt $ zgrep -i "ukázkový" test.txt.gz
Nejprve komprimujeme test.txt soubor pomocí gzip a poté pomocí zgrep pro 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 té doby test.txt obsahuje pouze jeden prázdný řádek, tento příkaz vrátí 1. Prázdné řádky se shodují pomocí regulárního výrazu „^ $“ a jejich počet je vytištěn pomocí -C volba.
43. Najděte více vzorů
Doposud jsme se zaměřili na nalezení jediného vzoru. Nástroj grep také umožňuje uživatelům vyhledávat řádky s více vzory najednou. Podívejte se na níže uvedené příklady příkazů a podívejte se, jak to funguje.
$ grep -e 'sample' -e 'file' test.txt $ grep -e 'ukázkový' test.txt | grep -e 'soubor' $ grep -e 'ukázka \ | souborový test.txt
Všechny výše uvedené příkazy vytisknou řádky, které obsahují jak „vzorek“, tak „soubor“.
44. Porovnejte platné e-mailové adresy
Mnoho zkušených programátorů si ráda ověřuje vstupy uživatelů sami. 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._% + -] + @ [A-Za-z0-9.-] + \.[A-Za-z] 2,6 \ b "/ cesta / k / datům
Tento příkaz je extrémně efektivní 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
Obslužný program grep nabízí mnohem více užitečných kombinací příkazů, které umožňují další operace s daty. V této části pojednáváme o několika zřídka používaných, ale podstatných příkazech.
45. Vyberte vzory ze souborů
Vzory regulárního výrazu pro grep můžete z předdefinovaných souborů vybrat docela snadno. Použijte -F možnost.
$ echo "sample"> soubor $ grep -f test souboru.txt
Pomocí příkazu echo vytváříme vstupní soubor obsahující jeden vzor. Druhý příkaz ukazuje vstup do souboru pro grep.
46. Kontrolní kontexty
Kontext výstupu grepu můžete snadno ovládat pomocí možností -A, -B, a -C. Následující příkazy je zobrazují v akci.
$ grep -A2 'souborový' 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
The -s Možnost umožňuje uživatelům potlačit výchozí chybové zprávy zobrazené grepem v případě neexistujících nebo nečitelných souborů.
$ grep -s 'file' testování.Testování souboru „txt $ grep −−no-messages“.txt
Ačkoli není pojmenován žádný soubor testování.txt v mém pracovním adresáři grep nevydává pro tento příkaz žádnou chybovou zprávu.
48. Zobrazit informace o verzi
Nástroj grep je mnohem starší než samotný Linux a sahá až do počátků Unixu. Další příkaz použijte, pokud chcete získat informace o verzi grepu.
$ grep -V $ grep - verze
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 velmi podrobná a poskytuje důkladný úvod do dostupných funkcí a použití regulárních výrazů. Na stránce manuálu pro grep můžete použít níže uvedený příkaz.
$ man grep
Končící myšlenky
Protože můžete vytvořit libovolnou kombinaci příkazů pomocí robustních možností CLI grepu, je těžké zapouzdřit vše o příkazu grep do jediného průvodce. Naši redaktoři se však snažili načrtnout téměř každý praktický příklad grepu, který vám pomůže se s ním lépe seznámit. Doporučujeme procvičit 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ž každý den můžete čelit novějším překážkám, je to jediný způsob, jak skutečně zvládnout příkaz Linux grep.