V tomto článku vysvětlíme použití grep utility na různých příkladech. Debian 10 použijeme k vysvětlení příkazů a metod zmíněných v tomto článku.
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 nainstalovat grepPoužívání Grep
Zde je základní syntaxe příkazu grep. Začíná to grepem, následují některé možnosti a vyhledávací kritéria a poté končí názvem souboru.
$ grep [možnosti] VZOR [SOUBOR…]Vyhledejte 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 -l | grep -i “řetězecNapříklad hledat název souboru, který obsahuje řetězec „test„, Příkaz by byl:
$ ls -l | grep -i testTento 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:
$ grep „řetězec“ název souboruNapříklad hledat řetězec „test“V souboru s názvem testfile1, použili jsme následující příkaz:
$ grep „zaměstnanec“ testovací soubor1
Výše uvedený výstup vrátil větu z testfile1 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:
$ grep „řetězec“ název_souboru1 název_souboru2Například k vyhledání řetězce „zaměstnanec“ v našich dvou souborech testfile1 a testfile2 jsme použili následující příkaz:
$ grep „zaměstnanec“ testfile1 testfile2
Výše uvedený příkaz zobrazí seznam všech řádků, které obsahují řetězec „zaměstnanec“ z obou souborů testfile1 a testfile2.
Můžete také použít zástupný znak, pokud všechny názvy souborů začínají stejným textem.
$ grep „řetězec“ název souboru *Jako, vezmeme-li výše uvedený příklad, ve kterém byly naše názvy souborů testfile1 a testfile2 , příkaz by byl:
$ grep „zaměstnanec“ testovací soubor *
Vyhledejte řetězec v souboru ignorováním velkých a malých písmen řetězce
Nejčastěji jste se setkali s tím, že když něco hledáte pomocí grep, ale nedostanete výstup. K tomu dochází kvůli neshodě případů 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.
Můžete říct grepu, aby ignoroval případ vyhledávacího řetězce pomocí -i vlajky za grepem takto:
$ grep -i „řetězec“ název souboru
Použitím parametru -i provede příkaz vyhledávání bez rozlišování velkých a malých písmen a vrátí všechny řádky obsahující řetězec „zaměstnanec„V něm jsou písmena psána velkými nebo malými písmeny.
Hledejte pomocí regulárního výrazu
Pokud je regulární výraz správně používán, je velmi efektivní funkcí v grepu. Pomocí příkazu Grep můžete definovat regulární výraz s počátečním a koncovým klíčovým slovem. Tímto způsobem nebudete muset psát celý řádek příkazem grep. K tomuto účelu lze použít následující syntaxi.
$ grep “počáteční klíčové slovo.* ukončení klíčového slova ”název souboruNapříklad k vyhledání řádku v souboru s názvem testfile1, který začíná řetězcem „this“ a končí řetězcem „data“, jsme použili následující příkaz:
$ grep „toto.* data “testfile1
Vytiskne celý řádek z testfile1 obsahující výraz (počáteční klíčové slovo „toto“ a koncové klíčové slovo „data“).
Tisk určitého počtu řádků za / před vyhledávacím řetězcem
Můžete také zobrazit konkrétní počet řádků v souboru před / po shodě řetězce spolu se samotným odpovídajícím řetězcem. Pro tento účel lze použít následující syntaxi:
$ grep -AZobrazí se počet N řádků po shodě řetězce v zadaném souboru včetně shodného řetězce.
Jedná se například o náš ukázkový soubor s názvem testfile2.
Následující příkaz vypíše odpovídající řádek obsahující řetězec „zaměstnanec”, Spolu se 2 řádky po něm.
$ grep -A 2 -i „zaměstnanec“ testovací soubor2
Podobně pro zobrazení N počtu řádků před odpovídajícím řetězcem v konkrétním souboru použijte následující syntaxi:
$ grep -BChcete-li zobrazit N počet řádků kolem řetězce v konkrétním souboru, použijte následující syntaxi:
$ grep -CZvýraznění hledání
Grep ve výchozím nastavení tiskne shodné řádky, ale neukazuje, která část řádku je shodná. Pokud použijete volbu -color s grep, zobrazí se, kde se ve vašem souboru objeví obráběcí řetězce. Grep ve výchozím nastavení používá pro zvýraznění červenou barvu.
Pro tento účel lze použít následující syntaxi:
$ grep „string“ název souboru --color
Počítání počtu zápasů
Pokud chcete spočítat, kolikrát se konkrétní slovo objeví v konkrétním souboru, můžete použít možnost grep s -c. Vrátí pouze počet shod, nikoli samotné shody. Pro tento účel lze použít následující syntaxi:
$ grep -c „řetězec“ název souboruToto 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 testfile3.
Obrácené vyhledávání
Někdy chcete provést zpětné vyhledávání, které zobrazí všechny řádky kromě těch, které se shodují se vstupem. Chcete-li tak učinit, jednoduše použijte příznak -v následovaný grep:
$ grep -v „řetězec“ název souboruNapříklad pro zobrazení všech řádků v souboru testfile3 které v nich neobsahují slovo „účet“, použili jsme následující příkaz:
$ grep -v „účet“ testfile3
Používání Grepu s dalšími příkazy
Grep lze také použít k odfiltrování požadovaného výsledku z různých výstupů příkazů. Například z „seznam nainstalovaných apt ” výstup příkazu, chcete najít pouze balíčky, které byly nainstalovány automaticky, můžete výsledek odfiltrovat pomocí grep takto:
$ apt - nainstalovaný seznam | grep 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 | grep architektura
V tomto článku jsme popsali několik příkladů, které vám pomohou porozumět příkazům grep a jeho použití v různých podmínkách. Silné uchopení příkazu grep vám může ušetřit spoustu času, pokud se potřebujete podívat na velké konfigurační soubory nebo soubory protokolu a prohledávat skrz ně užitečné informace.