Co je grep?
Nástroj grep, kterého se dnes dočkáme, je unixový nástroj, který patří do stejné rodiny jako nástroje egrep a fgrep. Toto jsou všechny unixové nástroje navržené pro provádění úlohy opakovaného vyhledávání ve vašich souborech a textu. Můžete vyhledávat soubory a jejich obsah pro získání užitečných informací zadáním konkrétních vyhledávacích kritérií pomocí příkazu grep.
Takže říkají, že GREP znamená Global Regular Expression Print, ale odkud pochází tento příkaz „grep“? grep v podstatě vychází ze specifického příkazu pro velmi jednoduchý a úctyhodný unixový textový editor s názvem ed. Takto probíhá příkaz ed:
g/re/p
Účel příkazu je velmi podobný tomu, co máme na mysli prohledáváním grep. Tento příkaz načte všechny řádky v souboru odpovídající určitému textovému vzoru.
Pojďme prozkoumat příkaz grep více. V tomto článku vysvětlíme instalaci nástroje grep a uvedeme několik příkladů, pomocí kterých se můžete přesně naučit, jak a v jakém scénáři jej můžete používat.
Spustili jsme příkazy a postupy uvedené v tomto článku na systému Ubuntu 18.04 LTS.
Nainstalovat grep
Ačkoli je nástroj grep standardně dodáván s většinou systémů Linux, pokud jej nemáte nainstalovaný v systému, zde je postup:
Otevřete svůj terminál Ubuntu buď pomocí Dash nebo zkratky Ctrl+Alt+T. Poté zadejte následující příkaz jako root, abyste mohli nainstalovat grep přes apt-get:
$ sudo apt-get install grep
Zadejte y, když se zobrazí výzva s možností y/n během instalační procedury. Poté bude na váš systém nainstalován obslužný program grep.
Instalaci můžete ověřit kontrolou verze grep pomocí následujícího příkazu:
$ grep --version
Použití příkazu grep s příklady
Příkaz grep lze nejlépe vysvětlit předložením některých scénářů, kde jej lze použít. Zde je několik příkladů:
Vyhledat soubory
Pokud chcete vyhledat název souboru, který obsahuje konkrétní klíčové slovo, můžete seznam souborů filtrovat pomocí příkazu grep takto:
Syntaxe:
$ ls -l | grep -i “ hledané slovo”
Příklady:
$ ls -l | grep -i sample
Tento příkaz zobrazí seznam všech souborů v aktuálním adresáři s názvem souboru obsahujícím slovo „private“.
Vyhledat řetězec v souboru
Větu ze souboru, který obsahuje konkrétní řetězec textu, můžete načíst pomocí příkazu grep.
Syntaxe:
grep „řetězcový“ název souboru
Příklad:
$ grep “sample file” sampleFile.txt
Můj ukázkový soubor sampleFile.txt obsahuje větu s řetězcem „sample file“, který můžete vidět ve výše uvedeném výstupu. Klíčové slovo a řetězec se ve výsledcích vyhledávání zobrazí v barevné podobě.
Vyhledejte řetězec ve více než jednom souboru
V případě, že chcete hledat věty obsahující váš textový řetězec ze všech souborů stejného typu, je vám k službám příkaz grep.
Syntaxe 1:
$ grep „řetězec“ název_souboruKlíčové slovo*
Syntaxe 2:
$ grep “string” *.přípona
Příklad1:
$ grep "sample file” sample*
Tento příkaz načte všechny věty obsahující řetězec „sample file“ ze všech souborů s názvem souboru obsahujícím klíčové slovo „sample“.
Příklad 2:
$ grep "sample file” *.txt
Tento příkaz načte všechny věty obsahující řetězec „sample file“ ze všech souborů s příponou .txt.
Vyhledejte řetězec v souboru bez zohlednění velikosti řetězce
Ve výše uvedených příkladech byl můj textový řetězec naštěstí ve stejném případě jako řetězec nalezený v mých ukázkových textových souborech. Pokud bych zadal následující příkaz, můj výsledek hledání by byl nulový, protože text v mém souboru nezačíná velkým slovem „Ukázka“
$ grep "Sample file" *.txt
Řekněme grep, aby ignoroval velká a malá písmena ve vyhledávacím řetězci a vytiskl výsledky vyhledávání na základě řetězce pomocí volby -i.
Syntaxe:
$ grep -i „řetězec“ název_souboru
Příklad:
$ grep -i "Sample file" *.txt
Tento příkaz načte všechny věty obsahující řetězec „sample file“ ze všech souborů s příponou .txt. Toto nebude brát v úvahu, zda byl hledaný řetězec napsán velkými nebo malými písmeny.
Vyhledávání na základě regulárního výrazu
Pomocí příkazu grep můžete určit regulární výraz s klíčovým slovem začátek a konec. Výstupem bude věta obsahující celý výraz mezi vámi zadaným počátečním a koncovým klíčovým slovem. Tato funkce je velmi výkonná, protože do příkazu vyhledávání nemusíte psát celý výraz.
Syntaxe:
$ grep název souboru „startingKeyword.*endingKeyword“
Příklad:
$ grep "starting.*.ending" sampleFile.txt
Tento příkaz vytiskne větu obsahující výraz (začínající od mého počátečního klíčového slova a končící u mého koncového klíčového slova) ze souboru, který jsem zadal v příkazu grep.
Zobrazení zadaného počtu řádků za/před vyhledávacím řetězcem
Příkaz grep můžete použít k vytištění N počtu řádků před/za hledaným řetězcem ze souboru. Výsledek hledání také obsahuje řádek textu obsahující hledaný řetězec.
Syntaxe pro N počet řádků za řetězcem klíče:
$ grep -A
Příklad:
$ grep -A 3 -i "samplestring" sampleFile.txt
Můj ukázkový textový soubor vypadá takto:
A takto vypadá výstup příkazu:
Zobrazí 3 řádky, včetně toho, který obsahuje hledaný řetězec, ze souboru, který jsem zadal v příkazu grep.
Syntaxe pro N počet řádků před klíčovým řetězcem:
$ grep -B
Můžete také vyhledat N počet řádků „kolem“ textového řetězce. To znamená N počet řádků před a N za textovým řetězcem.
Syntaxe pro N počet řádků kolem klíčového řetězce:
$ grep -C
Pomocí jednoduchých příkladů popsaných v tomto článku můžete ovládat příkaz grep. Poté jej můžete použít k vyhledávání filtrovaných výsledků, které mohou zahrnovat soubory nebo obsah souboru. To ušetří spoustu času, který jste strávili procházením celých výsledků vyhledávání, než jste zvládli příkaz grep.