grep

Linux egrep Příkaz s příklady

Linux egrep Příkaz s příklady
Příkaz egrep patří do rodiny příkazu grep, který se používá pro vyhledávání vzorů v systému Linux. Pokud jste použili příkaz grep, egrep funguje stejně jako grep -E (grep Extended regex '). Egrep prohledá konkrétní soubor, řádek po řádku a vytiskne řádek (y), které obsahují hledaný řetězec / regulární výraz. V tomto článku vysvětlíme 15 užitečných příkladů příkazů egrep, které začátečníkům a dokonce i odborníkům pomohou provádět smysluplné vyhledávání v systému Linux. Tyto příklady jsme provedli v systému Debian 10 Buster, ale lze je snadno replikovat na většině linuxových distribucí.

Příklad 1: Hledání konkrétního řetězce v souboru

Toto je nejběžnější použití příkazu egrep. Co uděláte, je, že zadáte řetězec, který chcete vyhledat, a název souboru, ve kterém chcete tento řetězec vyhledat. Výsledek poté zobrazí celý řádek obsahující hledaný řetězec.

Syntax:

$ egrep „search_string“ název souboru

Příklad:

$ egrep debian samplefile.txt

V tomto příkladu jsem hledal slovo „debian“ v zadaném textovém souboru. Můžete vidět, jak výsledky zobrazují celý řádek, který obsahuje slovo „debian“:

Příklad 2: Hledání konkrétního řetězce ve více souborech

Pomocí příkazu egrep můžete vyhledat řetězec mezi více soubory umístěnými ve stejném adresáři. Při hledání „vzoru“ pro hledané soubory musíte být trochu konkrétnější. To bude jasnější na příkladu, který představíme.

Syntax:

$ egrep "vyhledávací_řetězec" název_souboru

Příklad:

Zde budeme hledat slovo „debian“ ve všech jazycích .soubory txt zadáním vzoru názvu souboru následujícím způsobem:

$ egrep „debian“ *.txt

Příkaz vytiskl všechny řádky spolu se jmény souborů, které obsahují slovo „debian“ ze všech .txt soubory v aktuálním adresáři.

Příklad 3: Rekurzivní prohledávání řetězce v celém adresáři

Chcete-li vyhledat řetězec ve všech souborech z adresáře a jeho podadresářů, můžete tak učinit pomocí parametru -r s příkazem egrep.

Syntax:

$ egrep -r "řetězec_vyhledávání" *

Příklad:

V tomto příkladu hledám slovo „sample“ v souborech celého aktuálního adresáře (Downloads).

$ egrep -r "sample" *

Výsledky obsahují všechny řádky spolu s názvy souborů, které obsahují slovo „sample“ ze všech souborů v adresáři Downloads a jeho podadresářích.

Příklad 4: Provádění vyhledávání bez ohledu na velikost písmen

S příznakem -i můžete pomocí příkazu egrep vytisknout výsledky na základě vyhledávacího řetězce, aniž byste se museli starat o jeho velikost.

Syntax:

$ egrep -i "vyhledávací_řetězec" název souboru

Příklad:

Zde hledám slovo „debian“ a chci, aby výsledky zobrazily všechny řádky ze souboru, které obsahují slovo „debian“ nebo „Debian, bez ohledu na jeho případ.

$ egrep -i "vyhledávací_řetězec" název souboru

Můžete vidět, jak mi příznak -i pomohl načíst všechny řádky, které obsahují vyhledávací řetězec, pomocí vyhledávání „necitlivých“ malých a velkých písmen.

Příklad 5: Hledání řetězce jako celého slova, nikoli jako podřetězce

Když normálně hledáte řetězec pomocí egrep, vytiskne všechna slova, která obsahují řetězec, jako podřetězec. Například vyhledávání řetězce „on“ vytiskne všechna slova obsahující řetězec „on“ jako „on“, „only“, „monitor“, „clone“ atd. Pokud chcete, aby výsledky zobrazovaly pouze slovo „on“ jako celé slovo a ne jako podřetězec, můžete použít příznak -w s egrep.

Syntax:

$ egrep -w název_vyhledávaného_řetězce

Příklad:

Zde hledám řetězec „on“ v ukázkovém souboru:

$ egrep -i „na“ ukázkovém souboru.txt

Ve výše uvedeném výstupu vidíte, že obsahuje také slovo „pouze“. To však není to, co chci, protože výlučně hledám slovo „on“. Toto je tedy příkaz, který místo toho použiji:

$ egrep -iw „on“ samplefile.txt

Moje výsledky vyhledávání nyní obsahují pouze řádky, které obsahují slovo „on“ jako celé slovo.

Příklad 6: Tisk pouze názvů souborů, které obsahují řetězec

Někdy chceme pouze načíst názvy souborů, které obsahují konkrétní řetězec, spíše než tisknout řádky, které jej obsahují. To lze provést pomocí příznaku -l (malá písmena L) pomocí příkazu egrep.

Syntax:

$ egrep -l "vyhledávací_řetězec" název_souboru

Příklad:

Zde hledám řetězec „sample“ ve všech .Soubory txt v aktuálním adresáři:

$ egrep -l vzorek *.txt

Výsledky hledání vytisknou pouze název souborů, které obsahují zadaný řetězec.

Příklad 7: Tisk pouze hledaného řetězce ze souboru

Místo tisku celého řádku, který obsahuje hledaný řetězec, můžete k vytištění samotného řetězce použít příkaz egrep. Řetězec se vytiskne, kolikrát se objeví v zadaném souboru.

Syntax:

$ egrep -o "vyhledávací_řetězec" název souboru

Příklad:

V tomto příkladu hledám ve svém souboru slovo „This“.

$ egrep -o Tento ukázkový soubor_.txt

Poznámka: Toto použití příkazu se hodí, když hledáte řetězec založený na vzoru regulárního výrazu. Regulární výrazy podrobně vysvětlíme v jednom z následujících příkladů.

Příklad 8: Zobrazení n počtu řádků před, za nebo kolem hledaného řetězce

Někdy je velmi důležité znát kontext v souboru, kde je použit konkrétní řetězec. Egrep se hodí v tom smyslu, že jej lze použít k zobrazení řádku obsahujícího vyhledávací řetězec a také určitý počet řádků před, za a obklopující.

Toto je ukázkový textový soubor, který budu používat k vysvětlení následujících příkladů:

N počet řádků Za hledaným řetězcem:

Pomocí příznaku A následujícím způsobem se zobrazí řádek obsahující vyhledávací řetězec a N počet řádků za ním:

$ egrep -A "search_string" název souboru

Příklad:

$ egrep -A 2 „sample“ samplefile.txt

N počet řádků Před hledaným řetězcem:

Pomocí příznaku B následujícím způsobem se zobrazí řádek obsahující vyhledávací řetězec a N počet řádků před ním:

$ egrep -B "search_string" název souboru

Příklad:

$ egrep -B 2 „sample“ samplefile.txt

N počet řádků Před hledaným řetězcem:

Použití příznaku C následujícím způsobem zobrazí řádek obsahující vyhledávací řetězec a N počet řádků před a za ním:

$ egrep -C "search_string" název souboru

Příklad:

$ egrep -C 2 „sample“ samplefile.txt

Příklad 9: Shoda regulárního výrazu v souborech

Příkaz egrep se stává výkonnějším, když budete hledat regulární výrazy namísto pevných vyhledávacích řetězců v souboru.

Syntax:

$ egrep "RegularExpressions" název souboru

Vysvětlíme vám, jak můžete při vyhledávání egrep používat regulární výrazy:

Operátor opakování Použití
? Předchozí položka dříve ? je volitelná a je spárována maximálně jednou

* Předchozí položka před * bude uzavřena nula nebo vícekrát
+ Předchozí položka před + bude shodována jednou nebo vícekrát
n Předchozí položka je přesně shodná n počet opakování.
n, Předchozí položka je uzavřena n nebo vícekrát
, m Předchozí položka je spárována maximálně mkrát
n, m Předchozí položka je spárována alespoň nkrát, ale ne více než m krát

Příklad:

V následujícím příkladu se shodují řádky obsahující následující výraz:

začínající na „Gnome“ a končící na „programech“

Příklad 10: Zvýraznění hledaného řetězce

Když nastavíte proměnnou prostředí GREP_OPTIONS níže, získáte výstup se zvýrazněným vyhledávacím řetězcem / vzorem ve výsledcích:

$ sudo export GREP_OPTIONS = '- color = auto' GREP_COLOR = '100; 8'

Poté můžete řetězec vyhledat jakýmkoli způsobem, který jsme popsali v příkladech tohoto článku.

Příklad 11: Provádění invertního vyhledávání v souboru

Invertním vyhledáváním myslíme, že příkaz egrep vytiskne vše v souboru, kromě řádků, které obsahují hledaný řetězec. Následující ukázkový soubor použijeme k vysvětlení invertního vyhledávání přes egrep. Vytiskli jsme obsah souboru pomocí příkazu cat:

Syntax:

$ egrep -v "vyhledávací_řetězec" název souboru

Příklad:

Z ukázkového souboru, který jsme zmínili, chceme ve výstupu vynechat řádek obsahující slovo „two“, proto použijeme následující příkaz:

$ egrep -v "two" samplefile_.txt

Můžete vidět, jak výstup obsahuje vše ze ukázkového souboru kromě druhého řádku, který obsahoval vyhledávací řetězec „two“.

Příklad 12: Provádění invertního vyhledávání na základě více kritérií / vyhledávacího vzoru

S příznakem -v můžete také provést příkaz egrep k provedení obráceného vyhledávání na základě více než jednoho vyhledávacího řetězce / vzoru.

K vysvětlení tohoto scénáře použijeme stejný ukázkový soubor, který jsme zmínili v příkladu 11.

Syntax:

$ egrep -v -e "řetězec_vyhledávání" / "vzor" -e "řetězec_vyhledávání" / "vzor"
… název souboru

Příklad:

Z ukázkového souboru, který jsme zmínili, chceme vynechat řádek (řádky) obsahující ve výstupu slova „one“ a „two“, proto použijeme následující příkaz:

$ egrep -v -e „jeden“ -e „dva“ ukázkový soubor_.txt

Poskytli jsme dvě slova, která se mají vynechat pomocí příznaku -e, proto se výstup zobrazí takto:

Příklad 13: Tisk počtu řádků, které odpovídají hledanému řetězci

Místo tisku hledaného řetězce ze souboru nebo řádků, které jej obsahují, můžete pomocí příkazu egrep spočítat a vytisknout počet řádků odpovídajících řetězci. Tento počet lze načíst pomocí parametru -c pomocí příkazu egrep.

Syntax:

$ egrep -c "search_string" název souboru

Příklad:

V tomto příkladu použijeme parametr -c k výpočtu počtu řádků, které v našem ukázkovém souboru obsahují slovo „This“:

$ egrep -c „Tento“ název souboru

Můžete zde také použít funkci invertního vyhledávání k počítání a tisku počtu řádků, které neobsahují hledaný řetězec: 

$ grep -v -c název_vyhledávacího řetězce

Příklad 14: Zobrazení čísla řádku, kde je řetězec spárován

Pomocí parametru -n můžete příkazem egrep vytisknout odpovídající řádek spolu s číslem řádku, které obsahuje hledaný řetězec.

Syntax:

$ grep -n "vyhledávací_řetězec" název souboru

Příklad:

$ grep -n „This“ samplefile_.txt

Můžete vidět, jak jsou čísla řádků zobrazena oproti výsledkům vyhledávání.

Příklad 15: Zobrazení pozice v souboru, kde se shoduje hledaný řetězec

Pokud chcete znát pozici v souboru, kde existuje hledaný řetězec, můžete použít příkaz -b s příkazem egrep.

$ grep -o -b "vyhledávací_řetězec" název souboru

Příklad:

$ grep -o -b „This“ samplefile_.txt

Výsledky hledání vytisknou posunutí bajtu souboru, ve kterém existuje hledané slovo.Jednalo se o podrobné použití příkazu egrep. Pomocí kombinace příznaků vysvětlených v tomto článku můžete ve svých souborech provádět smysluplnější a složitější vyhledávání.

Hry Nejlepší linuxové distribuce pro hraní her v roce 2021
Nejlepší linuxové distribuce pro hraní her v roce 2021
Operační systém Linux má za sebou dlouhou cestu od svého původního, jednoduchého vzhledu založeného na serveru. Tento OS se v posledních letech nesmír...
Hry Jak zachytit a streamovat vaši herní relaci v systému Linux
Jak zachytit a streamovat vaši herní relaci v systému Linux
V minulosti bylo hraní her považováno pouze za koníček, ale postupem času došlo v herním průmyslu k obrovskému nárůstu z hlediska technologie a počtu ...
Hry Nejlepší hry pro ruční sledování
Nejlepší hry pro ruční sledování
Oculus Quest nedávno představil skvělou myšlenku ručního sledování bez ovladačů. S neustále se zvyšujícím počtem her a aktivit, které provádějí podpor...