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 souboruPříklad:
$ egrep debian samplefile.txtV 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_souboruPří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 souboruPří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ězcePří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_souboruPří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 souboruPří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 -APří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 -BPří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 -CPří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 souboruVysvě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 souboruPří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_.txtPoskytli 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 souboruPří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 souboruPří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 souboruPří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í.