Az egrep parancs a grep parancs családjába tartozik, amelyet Linuxban mintakeresésre használnak. Ha már használtad a grep parancsot, az egrep ugyanúgy működik, mint a grep -E (grep Extended regex’). Az eggrep egy adott fájlt sorról sorra átvizsgál, és kiírja azokat a sorokat, amelyek tartalmazzák a keresési karakterláncot/szabályos kifejezést. Ebben a cikkben az egrep parancsok 15 hasznos példáját ismertetjük, amelyek segítenek a kezdőknek és még a szakértőknek is értelmes kereséseket végezni LinuxbanEzeket a példákat egy Debian 10 Buster rendszeren hajtottuk végre, de a legtöbb Linux disztribúción könnyen megismételhetők.

1. példa: Egy adott karakterlánc keresése egy fájlban

Ez az egrep parancs leggyakoribb felhasználása. Azt csinálod, hogy megadsz egy karakterláncot, amit keresni akarsz, és a fájl nevét, amiben ezt a karakterláncot meg akarod keresni. Az eredmény ezután megjeleníti a keresett karakterláncot tartalmazó teljes sort.

Szintaktika:

$ egrep “search_string” filename

Példa:

$ egrep debian samplefile.txt

A példában a “debian” szót kerestem a megadott szöveges fájlban. Láthatjuk, hogy az eredmény a “debian” szót tartalmazó teljes sort megjeleníti:

2. példa: Egy adott karakterlánc keresése több fájlban

Az egrep paranccsal egy karakterláncot kereshetünk több, ugyanabban a könyvtárban található fájl között. Csak egy kicsit pontosabban kell megadnia a keresett fájlok “mintáját”. Ez a most bemutatásra kerülő példán keresztül még világosabbá válik.

Szintaktika:

$ egrep “search_string” filename_pattern

Példa:

Itt a “debian” szót fogjuk keresni az összes .txt fájlokat a fájlnévminta megadásával a következőképpen:

$ egrep “debian” *.txt

A parancs kiírta az összes sort, valamint a “debian” szót tartalmazó fájlneveket az aktuális könyvtár összes .txt fájljából.

3. példa: A karakterlánc rekurzív keresése a teljes könyvtárban

Ha egy könyvtár és alkönyvtárainak összes fájljában keresni akarunk egy karakterláncot, akkor ezt az egrep parancs -r jelzőjének használatával érhetjük el.

Szintaktika:

$ egrep -r “search_string” *

Példa:

A példában a “sample” szót keresem a teljes current(Downloads) könyvtár fájljaiban.

$ egrep -r “minta” *

A találat tartalmazza az összes olyan sort, a fájlnevekkel együtt, amely tartalmazza a “minta” szót a Letöltések könyvtár összes fájljából és annak alkönyvtáraiból.

4. példa: Nagy- és kisbetű-független keresés végrehajtása

A -i jelzővel az egrep parancs segítségével kiírhatja az eredményeket egy keresési karakterlánc alapján anélkül, hogy törődnie kellene a nagy- és kisbetűvel.

Szintaktika:

$ egrep -i “search_string” filename

Példa:

Itt a “debian” szót keresem, és azt akarom, hogy az eredmények a “debian” vagy “Debian” szót tartalmazó fájl összes sorát megjelenítse, függetlenül annak nagy- és kisbetűjétől.

$ egrep -i “search_string” filename

Láthatjuk, hogy a -i flag segített nekem abban, hogy a keresési karakterláncot tartalmazó összes sort lekérjem a “case insensitive” kereséssel.

5. példa: Egy karakterlánc keresése teljes szóként és nem részszóként

Amikor általában egrep segítségével keresünk egy karakterláncot, az összes olyan szót kiírja, amely a karakterláncot részszóként tartalmazza. Például a “on” karakterlánc keresése az összes olyan szót kiírja, amely tartalmazza a “on” karakterláncot, például ” on”, “only”, “monitor”, “clone” stb. Ha azt szeretné, hogy az eredmények csak az “on” szót jelenítsék meg teljes szóként, ne pedig részláncokként, akkor használhatja a -w jelzőt az egrep segítségével.

Szintaktika:

$ egrep -w “search_string” filename

Példa:

Itt a “on” sztringet keresem egy mintafájlban:

$ egrep -i “on” mintafájl.txt

A fenti kimeneten látható, hogy a “csak” szót is tartalmazza. Én azonban nem ezt szeretném, mivel kizárólag az “on” szót keresem. Ezért helyette ezt a parancsot fogom használni:

$ egrep -iw “on” samplefile.txt

Most a keresési eredményeim csak azokat a sorokat tartalmazzák, amelyek az “on” szót egész szóval tartalmazzák.

6. példa: Csak a karakterláncot tartalmazó fájlnevek kiírása

Néha csak azokat a fájlneveket akarjuk lekérni, amelyek tartalmaznak egy adott karakterláncot, és nem az azt tartalmazó sorokat akarjuk kiírni. Ezt az egrep parancs -l (kis L) jelzőjével érhetjük el.

Szintaktika:

$ egrep -l “search_string” filename_pattern

Példa:

Itt az aktuális könyvtárban lévő összes .txt fájlban a “sample” karakterláncot keresem:

$ egrep -l sample *.txt

A keresés eredménye csak a megadott karakterláncot tartalmazó fájlok nevét írja ki.

7. példa: Csak a keresett karakterlánc nyomtatása egy fájlból

A keresett karakterláncot tartalmazó teljes sor nyomtatása helyett az egrep paranccsal magát a karakterláncot is kiírhatjuk. A karakterlánc annyiszor kerül kiírásra, ahányszor a megadott fájlban szerepel.

Szintaktika:

$ egrep -o “keresősztring” filename

Példa:

Ebben a példában a “This” szót keresem a fájlban.

$ egrep -o Ez mintafájl_.txt

Megjegyzés: A parancsnak ez a használata akkor jön jól, ha egy karakterláncot keresünk egy reguláris kifejezés mintája alapján. A reguláris kifejezéseket a következő példák egyikében részletesen kifejtjük.

8. példa: A keresett karakterlánc előtti, utáni vagy körüli n számú sorok megjelenítése

Néha nagyon fontos tudni, hogy egy fájlban milyen kontextusban szerepel egy adott karakterlánc. Az egrep abban az értelemben jön jól, hogy segítségével megjeleníthető a keresett karakterláncot tartalmazó sor, valamint az azt megelőző, követő és körülvevő meghatározott számú sor.

Ez a szöveges mintafájl, amelyet a következő példák magyarázatához használok:

N számú sor a keresési karakterlánc után:

Az A jelzőt a következő módon használva megjeleníti a keresési karakterláncot tartalmazó sort és az azt követő N számú sort:

$ egrep -A <N> “keresési karakterlánc” fájlnév

Példa:

$ egrep -A 2 “minta” mintafájl.txt

N számú sor a keresési karakterlánc előtt:

A B jelzőt a következő módon használva megjeleníti a keresési karakterláncot tartalmazó sort és az azt megelőző N számú sort:

$ egrep -B <N> “search_string” filename

Példa:

$ egrep -B 2 “sample” samplefile.txt

N számú sor a keresési karakterlánc előtt:

A C jelzőt a következő módon használva megjeleníti a keresési karakterláncot tartalmazó sort, valamint az azt megelőző és követő N számú sort:

$ egrep -C <N> “search_string” filename

Példa:

$ egrep -C 2 “sample” samplefile.txt

9. példa: Szabályos kifejezések illesztése fájlokban

Az egrep parancs egyre erőteljesebbé válik, ha egy fájlban szilárd keresőszövegek helyett szabályos kifejezésekre keresünk.

Szintaktika:

$ egrep “RegularExpressions” filename

Magyarázzuk el, hogyan használhatjuk a reguláris kifejezéseket az egrep keresésben:

.

Megismétlési operátor Használjuk
? Az előző elem előtt ? opcionális, és legfeljebb egyszer illeszkedik
* A * előtti elemet nulla vagy több alkalommal illeszti
+ A + előtti elemet egy vagy több alkalommal illesztjük
{n} Az előző elemet pontosan n-szer illesztjük.
{n,} Az előző elem legalább n-szer illeszkedik
{,m} Az előző elem legfeljebb m-szer illeszkedik
{n,m} Az előző elem legalább n-szer, de legfeljebb m-szer illeszkedik

Példa:

A következő példában a következő kifejezést tartalmazó sorok illeszkednek:

“Gnome” kezdetű és ” programok”

10. példa: A keresési karakterlánc kiemelése

Ha a GREP_OPTIONS környezeti változót az alábbiak szerint állítja be, akkor a kimenetét a keresési karakterlánc/mintázat kiemelésével kapja az eredményekben:

$ sudo export GREP_OPTIONS=’–color=auto’ GREP_COLOR=’100;8′

Ezután bármilyen módon kereshet a karakterláncra, amit a cikk példáiban leírtunk.

11. példa: Invert keresés végrehajtása egy fájlban

Az invert keresés alatt azt értjük, hogy az egrep parancs mindent kiír a fájlból, kivéve a keresett karakterláncot tartalmazó sorokat. A következő mintafájlt fogjuk használni az egrep segítségével történő invert keresés magyarázatához. A fájl tartalmát a cat parancs segítségével nyomtattuk ki:

Szintaktika:

$ egrep -v “search_string” filename

Példa:

Az említett mintafájlból szeretnénk kihagyni a kimenetből a “kettő” szót tartalmazó sort, ezért a következő parancsot használjuk:

$ egrep -v “kettő” mintafájl_.txt

Láthatjuk, hogy a kimenet mindent tartalmaz a mintafájlból, kivéve a második sort, amely a “kettő” keresőszót tartalmazta.

12. példa: Invertált keresés végrehajtása több kritérium/keresési minta alapján

A -v jelzővel az egrep parancsot arra is rávehetjük, hogy egynél több keresőszál/mintázat alapján végezzen invertált keresést.

A forgatókönyv ismertetéséhez ugyanazt a mintafájlt fogjuk használni, amelyet a 11. példában említettünk.

Szintaktika:

$ egrep -v -e “search_string”/”pattern” -e “search_string”/”pattern”
…. filename

Példa:

Az említett mintafájlból az “egy” és “kettő” szavakat tartalmazó sor(ok)at szeretnénk kihagyni a kimenetből, ezért a következő parancsot fogjuk használni:

$ egrep -v -e “egy” -e “kettő” samplefile_.txt

A -e jelzővel két szót adtunk meg kihagyásra, ezért a kimenet a következőképpen fog kinézni:

13. példa: A keresett karakterláncnak megfelelő sorok számának kiírása

Ahelyett, hogy a keresett karakterláncot vagy az azt tartalmazó sorokat kiírnánk a fájlból, az egrep parancs segítségével megszámolhatjuk és kiírhatjuk a karakterláncnak megfelelő sorok számát. Ez a számolás az egrep parancs -c jelzőjével kérhető ki.

Szintaktika:

$ egrep -c “search_string” fájlnév

Példa:

Ebben a példában a -c flag segítségével megszámoljuk a “This” szót tartalmazó sorok számát a mintafájlunkban:

$ egrep -c “This” filename

Az inverz keresés funkciót is használhatja itt, hogy megszámolja és kiírja azon sorok számát, amelyek nem tartalmazzák a keresett karakterláncot:

$ grep -v -c “search_string” filename

14. példa: A sorszám megjelenítése, ahol a karakterláncot találta

A -n jelzővel elérheti, hogy az egrep parancs a keresett karakterláncot tartalmazó sorszámmal együtt kiírja a talált sort.

Szintaktika:

$ grep -n “keresősztring” fájlnév

Példa:

$ grep -n “Ez” mintafájl_.txt

Láthatja, hogy a keresési eredményekkel szemben a sorszámok is megjelennek.

Példa 15: A keresett karakterlánc találati helyének megjelenítése a fájlban

Ha tudni szeretné, hogy a keresett karakterlánc milyen helyen van a fájlban, akkor az egrep parancshoz használhatja a -b jelzőt.

$ grep -o -b “keresőszál” fájlnév

Példa:

$ grep -o -b “Ez” mintafájl_.txt

A keresési eredmény kiírja a fájl bájteltávolságát, ahol a keresőszó létezik.Ez volt az egrep parancs részletes használata. A cikkben ismertetett zászlók kombinációjának használatával értelmesebb és összetettebb kereséseket végezhet a fájljain.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.