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ť–ItestTento 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_souboruNapří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 1Výš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_souboru2Napří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í soubor2Výš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ězcePomocí 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 slovaNapří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 1Vytiskne 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_souboruPo 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ěstnance2Podobně 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_souboruChcete -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_souboruZvý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--barvaPočí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ězceToto 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ězceNapří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 účtu3Použ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ťArchitekturaV 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.