Příkaz Grep v Linuxu

Grep Command Linux



Příkaz Grep (globální tisk regulárních výrazů) je nejsilnější a pravidelně používaný nástroj příkazového řádku Linux. Pomocí Grepu můžete vyhledávat užitečné informace zadáním vyhledávacích kritérií. Hledá konkrétní výrazový vzor v zadaném souboru. Když najde shodu, vytiskne všechny řádky souboru, který odpovídá zadanému vzoru. To se hodí, když musíte filtrovat velké soubory protokolu.

V tomto článku vysvětlíme použití nástroje grep na různých příkladech. K vysvětlení příkazů a metod uvedených v tomto článku použijeme Debian 10.







Instalace Grep

Grep je nainstalován ve většině distribucí Linuxu. V případě, že ve vašem systému chybí, můžete jej nainstalovat pomocí následující metody v Terminálu:



$sudo apt-get install rukojeť

Pomocí Grep

Zde je základní syntaxe příkazu grep. Začíná grepem, následovaným některými možnostmi a kritérii vyhledávání a poté končí názvem souboru.



$rukojeť [možnosti]VZOR[SOUBOR...]

Hledat soubory

Chcete -li vyhledat název souboru v adresáři, který obsahuje konkrétní řetězec, můžete použít grep následujícím způsobem:





$ls -ten | rukojeť -itětiva

Chcete -li například vyhledat název souboru, který obsahuje řetězec test , příkaz by byl:

$ls-ten| rukojeť–Itest

Tento příkaz vypíše všechny soubory, které obsahují řetězec test .



Vyhledejte řetězec v souboru

Chcete -li vyhledat řetězec v konkrétním souboru, můžete použít následující syntaxi příkazu:

$rukojeťřetězec název_souboru

Například pro hledání řetězce test v souboru s názvem testovací soubor 1 , použili jsme následující příkaz :

$rukojeťtestovací soubor zaměstnance 1

Výše uvedený výstup vrátil větu z testovací soubor 1 který obsahuje řetězec zaměstnanec .

Vyhledejte řetězec ve více souborech

Chcete -li vyhledat řetězec ve více souborech, můžete použít následující syntaxi příkazu:

$rukojeťřetězec název_souboru1 název_souboru2

Například pro hledání řetězcového zaměstnance v našich dvou souborech testfile1 a testfile2 jsme použili následující příkaz:

$rukojeťtestovací soubor zaměstnance1 testovací soubor2

Výše uvedený příkaz vypíše všechny řádky, které obsahují řetězec zaměstnance z obou souborů testfile1 a testfile2.

Pokud všechny názvy souborů začínají stejným textem, můžete také použít zástupný znak.

$rukojeťřetězec název_souboru*

Pokud vezmeme výše uvedený příklad, ve kterém byla naše jména souborů testfile1 a testfile2 , příkaz by byl:

$rukojeťtestovací soubor zaměstnance*

Vyhledejte řetězec v souboru ignorováním velkých a malých písmen v řetězci

Nejčastěji jste se s tím setkali, když hledáte něco pomocí grep, ale neobdržíte výstup. K tomu dochází z důvodu neshody případu při hledání řetězce. Stejně jako v našem příkladu, pokud omylem použijeme Zaměstnanec namísto zaměstnanec , vrátí se nula, protože náš soubor obsahuje řetězec zaměstnanec malými písmeny.

Pomocí příkazu –i za příkazem grep můžete příkazu grep sdělit, aby ignoroval případ hledaného řetězce:

$rukojeť–I název souboru řetězce

Pomocí příznaku –i provede příkaz vyhledávání bez rozlišování malých a velkých písmen a vrátí všechny řádky obsahující řetězec zaměstnanec bez ohledu na to jsou písmena velká nebo malá.

Hledejte pomocí regulárního výrazu

Pokud je regulární výraz správně použit, je v grep velmi efektivní funkcí. Pomocí příkazu Grep můžete definovat regulární výraz s počátečním a koncovým klíčovým slovem. Pokud tak učiníte, nebudete muset zadávat celý řádek pomocí příkazu grep. K tomuto účelu lze použít následující syntaxi.

$rukojeťpočáteční klíčové slovo.*koncový název souboru klíčového slova

Například pro vyhledání řádku v souboru s názvem testfile1, který začíná řetězcem this a končí řetězcovými daty, jsme použili následující příkaz:

$rukojeťtento.*testovací soubor dat 1

Vytiskne celý řádek z testovací soubor 1 obsahující výraz (počáteční klíčové slovo toto a koncové údaje klíčového slova).

Vytiskněte konkrétní počet řádků za/před vyhledávací řetězec

Můžete také zobrazit konkrétní počet řádků v souboru před/po shodě řetězců spolu se samotným odpovídajícím řetězcem. K tomuto účelu lze použít následující syntaxi:

$rukojeť -NA <N.>řetězec název_souboru

Po spárování řetězce v zadaném souboru včetně shodného řetězce zobrazí N počet řádků.

Jedná se například o náš ukázkový soubor s názvem testovací soubor 2 .

Následující příkaz vygeneruje odpovídající řádek obsahující řetězec zaměstnanec , spolu se 2 řádky za ním.

$rukojeť-NA2–I testovací soubor zaměstnance2

Podobně k zobrazení N počtu řádků před odpovídajícím řetězcem v konkrétním souboru použijte následující syntaxi:

$rukojeť -B <N.>řetězec název_souboru

Chcete -li zobrazit N počet řádků kolem řetězce v konkrétním souboru, použijte následující syntaxi:

$rukojeť -C <N.>řetězec název_souboru

Zvýraznění vyhledávání

Ve výchozím nastavení tisknout odpovídající řádky, ale nezobrazuje, která část řádku odpovídá. Pokud v příkazu grep použijete volbu –color, zobrazí se, kde se ve vašem souboru zobrazují obráběcí řetězce. Grep ve výchozím nastavení používá pro zvýraznění červenou barvu.

K tomuto účelu lze použít následující syntaxi:

$rukojeťřetězec název_souboru--barva

Počítání počtu shod

Pokud chcete spočítat, kolikrát se konkrétní slovo objeví v konkrétním souboru, můžete použít volbu grep s –c. Vrací pouze počet shod, nikoli samotné shody. K tomuto účelu lze použít následující syntaxi:

$rukojeť–C název souboru řetězce

Toto je náš ukázkový soubor, který vypadá takto:

Následuje příklad příkazu, který vrátil počet opakování slova soubor se objevil v souboru s názvem testovací soubor 3 .

Invertované vyhledávání

Někdy chcete provést zpětné vyhledávání, které zobrazí všechny řádky kromě těch, které odpovídají vstupu. Chcete -li to provést, jednoduše použijte příznak –v následovaný příkazem grep:

$rukojeť–V název souboru řetězce

Například pro zobrazení všech řádků v souboru testovací soubor 3 které v nich neobsahují slovo účet, použili jsme následující příkaz:

$rukojeť–V testovacím souboru účtu3

Použití Grepu s jinými příkazy

Grep lze také použít k odfiltrování požadovaného výsledku z výstupu různých příkazů. Například z apt - nainstalovaný seznam Chcete -li najít pouze balíčky, které byly nainstalovány automaticky, můžete výsledek odfiltrovat pomocí grep takto:

$výstižný-nainstalovánoseznam| rukojeťautomatický

Podobně lscpu poskytuje podrobné informace o CPU. Pokud vás zajímají pouze informace týkající se architektury CPU, můžete je odfiltrovat pomocí následujícího příkazu:

$lscpu| rukojeťArchitektura

V tomto článku jsme popsali několik příkladů, které vám pomohou porozumět příkazům grep a jejich použití v různých podmínkách. Silné uchopení příkazu grep může ušetřit spoustu času, pokud se potřebujete podívat na velké konfigurační soubory nebo soubory protokolu a procházet jejich užitečné informace.