GNU/Linux >> Znalost Linux >  >> Linux

Jak grepovat pro více řetězců, vzorů nebo slov

Úvod

Grep je výkonný nástroj dostupný ve výchozím nastavení na systémech založených na UNIXu. Název je zkratkou pro Global Regular Expression Print.

Pomocí grep můžete upravit, jak nástroj v tomto případě vyhledává vzor nebo více vzorů. Můžete grepovat více řetězců v různých souborech a adresářích. Nástroj vytiskne všechny řádky, které obsahují slova, která zadáte jako vzor vyhledávání.

V této příručce vám ukážeme, jak používat grep k vyhledávání více slov nebo vzorců řetězců . Postupujte podle příkladů v tomto tutoriálu a naučte se, jak využít grep nejúčinněji.

Předpoklady

  • Linux nebo systém podobný UNIXu
  • Přístup k terminálu nebo příkazovému řádku
  • Uživatel s oprávněním pro přístup k nezbytným souborům a adresářům

Jak grepovat více vzorů – syntaxe

Základní syntaxe grep při hledání více vzorů v souboru zahrnuje použití grep příkaz následovaný řetězci a názvem souboru nebo jeho cestou.

Vzory musí být uzavřeny do jednoduchých uvozovek a odděleny svislou čarou. Před svislou čarou použijte zpětné lomítko | pro regulární výrazy.

grep 'pattern1\|pattern2' fileName_or_filePath

Nejnovější způsob použití grep je s -E volba. Tato možnost považuje vzor, ​​který jste použili, za rozšířený regulární výraz .

grep -E 'pattern1|pattern2' fileName_or_filePath

Zastaralá verze extended grep je egrep .

egrep 'pattern1|pattern2' fileName_or_filePath

Další možností je přidat do grep více samostatných vzorů příkaz.

Chcete-li to provést, použijte -e příznak a pokračujte v přidávání požadovaného počtu vyhledávacích vzorů:

grep -e pattern1 -e pattern2 fileName_or_filePath

Jaký je rozdíl mezi grep, grep -E a egrep?

egrep příkaz je zastaralá verze rozšířeného grep. Má stejnou funkci jako grep -E .

Rozdíl mezi grep a rozšířeným grep je ten, že rozšířený grep obsahuje meta znaky, které byly přidány později.

Tyto znaky jsou závorky () , složené závorky {} a otazník . Svislý znak | je také považován za meta znak v rozšířeném grep.

Příklady použití programu Grep pro více řetězců, vzorů a slov

Abyste se ujistili, že rozumíte tomu, jak používat grep k prohledávání více řetězců, doporučujeme vytvořit soubor s nějakým textem, na kterém vyzkoušíme několik různých případů použití.

V našem případě jsme soubor pojmenovali sample.txt a přidal několik odstavců textu. Soubor jsme uložili do adresáře test uživatele, tedy v /home/test/sample.txt

Jak grepovat více vzorů v souboru

V níže uvedených příkladech použijeme grep místo rozšířeného grep. Nezapomeňte použít zpětné lomítko před svislou čarou .

Vzhledem k tomu, že grep nepodporuje symbol svislé čáry jako operátor alternace, musíte použít znak escape (zpětné lomítko \), abyste to řekli grep příkaz k jinému zacházení s potrubím.

Chcete-li například vyhledat slova extra a hodnota v sample.txt soubor použijte tento příkaz:

grep 'extra\|value' sample.txt

Výstup zvýrazní řetězec, který jste chtěli grep.

Pokud je stejný soubor v jiném adresáři , musíte přejít do tohoto adresáře nebo použít úplnou cestu k souboru:

grep 'extra\|value' /home/test/Desktop/sample.txt

Vyhledávání více než dvou slov , přidávejte je stejným způsobem.

Chcete-li například vyhledat tři slova, přidejte požadovaný řetězec znaků následovaný zpětným lomítkem a svislou čarou:

grep 'extra\|value\|service' sample.txt

Podívejme se, jak výše uvedený příkaz grep vypadá při použití grep -E , egrep a grep -e :

grep -E ‘extra|value|service’ sample.txt
egrep ‘extra|value|service’ sample.txt
grep -e extra -e value -e service sample.txt

Použijeme grep v dalších příkladech, ale můžete použít libovolnou syntaxi, kterou preferujete.

Vyhledání více přesných shod v souboru

Pokud chcete najít přesné shody pro více vzorů, předejte -w příznak do grep příkaz.

grep -w 'provide\|count' sample.txt

Například níže uvedený výstup ukazuje rozdíl mezi vyhledáváním bez -w as ním:

Jak vidíte, výsledky jsou různé. První příkaz zobrazí všechny řádky s řetězci, které jste použili.

Druhý příkaz ukazuje, jak grepovat přesné shody pro více řetězců. Výstup vytiskne pouze řádky, které obsahují přesná slova.

Při použití funkce Grep pro více řetězců ignorujte velká a malá písmena

Abyste při hledání více vzorů něco nepřehlédli, použijte -i příznak ignorovat velká a malá písmena.

Například u tohoto příkazu budeme ignorovat malá a velká písmena:

grep -i 'phoenix\|linux' sample.txt

Výstup ukazuje, jak se tyto dva příkazy liší. Pokud zahrnete -i označit a ignorovat malá a velká písmena, výsledek pro více shod zahrnuje všechny shody.

Tímto způsobem získáte další výsledky. Pokud přidáte také -w flag na tento příkaz, můžete výsledky ještě více zúžit:

Zobrazit počet více shod v souboru

Řekněme, že sledujete soubor protokolu a chcete zjistit, zda se zvyšuje počet varování nebo zpráv. Nechcete vidět podrobné výsledky, když se vrátí velký počet shod.

Chcete-li například zobrazit počet více shod v bootstrap.log soubor, zadejte:

grep -c 'warning\|error' /var/log/bootstrap.log

Výstup vytiskne počet shod. Tímto způsobem můžete rychle zjistit, zda se zvýšil počet varování a chyb.

Grep pro více vzorů v konkrétním typu souboru

Pomocí grep můžete prohledávat více řetězců pouze v určitém typu souboru. Pokud chcete monitorovat soubory protokolu v jednom adresáři nebo pokud chcete prohledávat všechny textové soubory, použijte místo názvu souboru hvězdičku a příponu souboru.

Chcete-li například vyhledat varování a chyby ve všech .log soubory v /var/log/ adresář, zadejte:

grep 'warning\|error' /var/log/*.log

Abychom lépe ukázali, jak tato možnost funguje, ukážeme pouze počet shod.

Výstup zobrazuje všechny soubory, ve kterých grep prohledával řetězce, které jste použili.

Rekurzivně vyhledávat více vzorů v souboru

grep příkaz hledá pouze v aktuálním adresáři, když použijete zástupný znak hvězdička.

Chcete-li při hledání více vzorů zahrnout všechny podadresáře, přidejte -R operátor na grep:

grep -R 'warning\|error' /var/log/*.log

Výstup vrátí výsledky ze všech souborů grep příkaz nalezený v /var/log/ adresář a jeho podadresáře.


Linux
  1. Jak najít více řetězců v souborech?

  2. Jak mohu vyhledat víceřádkový vzor v souboru?

  3. Jak prohledávat obsah více souborů pdf?

  1. Jak hledat obsah po vzoru?

  2. Hledání více vzorů (slov) pomocí ack?

  3. Jak předat výstup příkazu jako více argumentů jinému příkazu

  1. Jak spustit Grep s více a vzory?

  2. Jak určíme více vzorů ignorování pro příkaz `strom`?

  3. Jak chown adresář pro více uživatelů?