grep
je výkonný nástroj příkazového řádku, který vám umožňuje vyhledávat v jednom nebo více vstupních souborech řádky, které odpovídají regulárnímu výrazu, a zapisuje každý odpovídající řádek na standardní výstup.
V tomto článku vám ukážeme, jak používat GNU grep
pro hledání více řetězců nebo vzorů.
Více vzorů Grep #
GNU grep
podporuje tři syntaxe regulárních výrazů, Basic, Extended a Perl-kompatibilní. Pokud není zadán žádný typ regulárního výrazu, grep
interpretovat vyhledávací vzory jako základní regulární výrazy.
Chcete-li vyhledat více vzorů, použijte operátor OR (alternace).
Alternativní operátor |
(pipe) umožňuje zadat různé možné shody, které mohou být doslovné řetězce nebo sady výrazů. Tento operátor má nejnižší prioritu ze všech operátorů regulárních výrazů.
Syntaxe pro vyhledávání více vzorů pomocí grep
základní regulární výrazy jsou následující:
grep 'pattern1\|pattern2' file...
Regulární výraz vždy uzavřete do jednoduchých uvozovek, abyste zabránili interpretaci a rozšíření metaznaků pomocí shellu.
Při použití základních regulárních výrazů jsou metaznaky interpretovány jako doslovné znaky. Chcete-li zachovat zvláštní význam metaznaků, musí být escapovány zpětným lomítkem (\
). To je důvod, proč se vyhýbáme operátoru OR (|
) s lomítkem.
Chcete-li vzor interpretovat jako rozšířený regulární výraz, vyvolejte grep
-E
(nebo --extended-regexp
) možnost. Při použití rozšířeného regulárního výrazu neuvádějte znak |
operátor:
grep -E 'pattern1|pattern2' file...
Další informace o tom, jak vytvářet regulární výrazy, naleznete v našem článku Grep regex.
Grep Multiple Strings #
Doslovné řetězce jsou nejzákladnější vzory.
V následujícím příkladu hledáme všechny výskyty slov fatal
, error
a critical
v souboru logerror Nginx:
grep 'fatal\|error\|critical' /var/log/nginx/error.log
Pokud hledaný řetězec obsahuje mezery, uzavřete jej do dvojitých uvozovek.
Zde je stejný příklad s použitím rozšířeného regulárního výrazu, který eliminuje potřebu escapování operátoru |
grep -E 'fatal|error|critical' /var/log/nginx/error.log
Ve výchozím nastavení grep
rozlišuje velká a malá písmena. To znamená, že velká a malá písmena jsou považována za odlišná.
Chcete-li při vyhledávání ignorovat malá a velká písmena, vyvolejte grep with
-i
možnost (nebo --ignore-case
):
grep -i 'fatal\|error\|critical' /var/log/nginx/error.log
Při hledání řetězce grep
zobrazí všechny řádky, kde je řetězec vložen do větších řetězců. Pokud jste tedy hledali „error“, grep
vytiskne také řádky, kde je výraz „chyba“ vložen do větších slov, jako je „bez chyby“ nebo „antiteroristé“.
Chcete-li vrátit pouze ty řádky, kde je zadaný řetězec celé slovo (uzavřené neslovnými znaky), použijte -w
(nebo --word-regexp
) možnost:
grep -w 'fatal\|error\|critical' /var/log/nginx/error.log
Mezi znaky slov patří alfanumerické znaky (a-z, A-Z a 0-9) a podtržítka (_). Všechny ostatní znaky jsou považovány za neslovní znaky.
Další podrobnosti o grep
možnosti, navštivte náš článek Příkaz Grep.
Závěr č.
Ukázali jsme vám, jak grep
pro hledání více vzorů, řetězců a slov.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.