GNU/Linux >> Znalost Linux >  >> Linux

Jak používat grep v Linuxu

Jednou z nejčastěji používaných operací v linuxovém terminálu je prohledávání textových souborů a filtrování standardních výstupních nebo chybových proudů. Linux poskytuje skvělý nástroj, který nám umožňuje tento úkol snadno vyřešit – grep. V tomto článku pokryjeme nejběžnější případy použití pro grep, které vám rozhodně zjednoduší každodenní rutinu.

Co je grep

Grep je zkratka pro Global Regular Expression Print. Jedná se o velmi užitečný nástroj, pokud jde o prohledávání velké sady textových souborů (například protokolů).

Grep je nejužitečnější příkaz na Linuxu/Unixu pro systémové administrátory, vývojáře a inženýry DevOps. Hlavním účelem tohoto nástroje je zkontrolovat řetězec nebo vzory v určeném souboru nebo filtrovat výstup jiných příkazů.

Tento vzor, ​​který jsme zmínili výše, je známý jako regulární výraz.

Příkaz grep vypíše do terminálu řádek s řetězcem, pokud najde shodu s vyhledávacím dotazem.

Existuje mnoho různých příkladů použití grep, takže se pojďme podívat, jak a kdy jej můžete použít.

Instalace grep v systému Linux

Obvykle je grep nainstalován ve většině systémů Linux a dokonce i v malých kontejnerech Docker. Pokud jej však nemáte nainstalovaný v systému, můžete to provést například pomocí následujícího příkazu:

apt-get updateapt-get install -y grep

příklady použití grepu

V této části článku pokryjeme nejběžnější příklady použití grep.

Filtrování výstupu příkazu

Příkaz grep můžete použít k vyhledání a tisku libovolného řádku z libovolného výstupu příkazu Linuxu, který odpovídá zadanému vzoru.

V tomto příkladu zkontrolujeme, které balíčky Pythonu 3 máme v našem systému Ubuntu:

dpkg -l | grep python3

V tomto příkladu:

  • dpkg -l vytiskne všechny nainstalované balíčky
  • grep bude filtrovat dpkg výstup a tisk pouze řetězce, které obsahují python3 řetězec

Stejným způsobem můžete zobrazit informace o modelu CPU, například:

grep -i 'Model' /proc/cpuinfo

Hledání řetězce v souboru

V tomto příkladu příkaz grep vyhledá řetězec „root“ v souboru ‚/etc/passwd‘ a vytiskne jej, pokud byl řetězec nalezen.

Obvykle tento příkaz používáme ke kontrole, zda má systém uživatelský účet se zadaným jménem (příklad root in out): 

grep root /etc/passwd

Prohledávat více souborů

Chcete-li zjistit řetězec ve více souborech najednou, použijte příkaz grep a zadejte názvy souborů do jednoho řádku. K prohledávání souborů podle masky můžete použít regulární výrazy.

Pojďme si stáhnout veřejně přístupný Apache access.log:

 mkdir -p /var/log/httpd
 cd /var/log/httpd
 wget http://www.almhuette-raith.at/apache-log/access.log 

Nyní rozdělme tento soubor na více souborů po 10 000 řádcích v souboru:

Nyní můžeme v souborech vyhledat chybu serveru HTTP 500:

grep ' 500 ' xac xad

Chcete-li hledat ve všech souborech v aktuálním pracovním adresáři, použijte * po vzoru.

V níže uvedeném příkladu příkaz grep vyhledá 500 chyb serveru ve všech souborech:

grep ' 500 ' *

Pomocí -w možnost v příkazu grep, můžete vyhledat soubory obsahující vzor slova:

grep -w 'Windows XP' *

Příkaz grep je dostatečně chytrý, aby nám umožnil provádět vyhledávání bez ohledu na velikost písmen ve vyhledávacím vzoru.

K tomu potřebujeme použít -i jako argument.

Zde je stejný příklad, ale nyní provádíme filtrování bez rozlišení velkých a malých písmen:

grep -i -w 'windows xp' *

Výstupní soubory obsahující vyhledávací vzor

Můžete použít -l možnost zobrazení všech názvů souborů obsahujících hledaný vzor:

grep -l -i -w 'windows xp' *

Počet shod na soubor

Pokud chcete vědět, kolikrát se váš vzor shodoval ve všech souborech, přidejte -c možnost:

grep -c -i -w 'windows xp' *

Počet řádků před hledaným vzorem

Chcete-li zobrazit řádky v souboru před vyhledávacím vzorem, přidejte -B argument následovaný počtem čísel, která chcete načíst ze souboru:

grep -B 3 -i -w 'windows xp' xaf

Počet řádků za hledaným vzorem

Podobně můžete použít -A argument k určení počtu řádků, které se mají vytisknout po hledaném vzoru:

grep -A 3 -i -w 'windows xp' xaf

Vytisknout číslo řádku pro shodu vzoru vyhledávání

Chcete-li zobrazit číslo řádku nalezeného hledaného vzoru, můžete použít -n argument:

grep -n -i -w 'windows xp' xaf

Přiřazení začátku řetězce

V následujícím příkladu použijeme příkaz grep k nalezení všech požadavků pocházejících z konkrétní IP adresy.

Všechny prohledávané řádky by měly začínat od 5.34.180.192 termín.

grep "^5.34.180.192" xaf

Přiřazení konce řetězce

Přidejte $ na konec vzoru, abyste našli řádky končící hledaným řetězcem:

grep "Chrome/62\" \"-\"$" xaf

Jakmile náš vyhledávací řetězec obsahuje " symboly, unikneme jim pomocí \ .

Můžeme použít grep k hledání více vzorů najednou. Přidejte -e argument před každým vyhledávacím vzorem:

grep -e "Chrome/62\" \"-\"$" -e "15/Mar/2021:08:35:23" xaf

Zde prohledáváme všechny řetězce v souboru, které končí na Chrome/62" "-" A obsahovat konkrétní datum a čas 15/Mar/2021:08:35:23 .

Změna výstupní barvy

Protože barevný výstup zvyšuje čitelnost, můžete jej změnit na svou oblíbenou barvu nastavením GREP_COLOR proměnná prostředí:

GREP_COLOR='1;35' grep --color=always 'admin' /etc/passwd

Více informací o proměnné GREP_COLOR můžete získat v oficiální dokumentaci grep.

Shrnutí

Příkaz grep je mimořádně užitečný, pokud jde o filtrování obsahu textových souborů nebo výsledků výstupu příkazů. V tomto článku jsme se zabývali nejběžněji používanými příkazy grep, které zefektivní prostředí vašeho prostředí.

Doufáme, že tento článek byl pro vás užitečný. Pokud ano, pomozte nám to rozšířit do světa.


Linux
  1. Jak používat Linuxový příkaz grep

  2. Jak používat Su Command v Linuxu

  3. Jak používat Linux Screen Command

  1. Jak používat příkaz grep v Linuxu/UNIXu

  2. Jak používat příkaz Disown v Linuxu

  3. Jak používat příkaz Linux SS

  1. Jak používat příkaz Linux nohup

  2. Jak používat příkaz Grep v Linuxu + užitečné příklady Grep

  3. Jak používat du Command v Linuxu