grep

Linux egrep parancs példákkal

Linux egrep parancs példákkal
Az egrep parancs a grep parancs családjába tartozik, amelyet a minták keresésére használnak Linux alatt. Ha a grep parancsot használta, az egrep ugyanúgy működik, mint a grep -E (grep Extended regex '). Egrep átvizsgál egy adott fájlt, sorról sorra, és kinyomtatja azokat a sorokat, amelyek tartalmazzák a keresési karakterláncot / reguláris kifejezést. Ebben a cikkben 15 hasznos példát mutatunk be az egrep parancsokról, amelyek segítik a kezdőket és még a szakértőket is értelmes keresések végrehajtásában a Linuxban. Ezeket a példákat egy Debian 10 Buster rendszeren hajtottuk végre, de a legtöbb Linux disztribúcióban könnyen megismételhetők.

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

Ez az egrep parancs leggyakoribb használata. Azt tennéd, hogy megadsz egy karakterláncot, amelyet keresni szeretnél, és azt a fájlnevet, amelyben keresni akarod azt a karakterláncot. Az eredmény ekkor megjeleníti a keresett karakterláncot tartalmazó teljes sort.

Szintaxis:

$ egrep “search_string” fájlnév

Példa:

$ egrep debian mintafájl.txt

Ebben a példában a „debian” szóra kerestem a megadott szövegfájlban. Láthatja, hogy az eredmények hogyan jelenítik meg a „debian” szót tartalmazó teljes sort:

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

Az egrep paranccsal kereshet egy karakterláncot több, ugyanazon könyvtárban található fájl között. Csak egy kicsit pontosabban kell meghatároznia a keresett fájlok „mintázatát”. Ez az általunk bemutatott példával egyértelműbbé válik.

Szintaxis:

$ egrep "search_string" fájlnév_minta

Példa:

Itt a „debian” szóra fogunk keresni .txt fájlokat a fájlnév mintázatának megadásával az alábbiak szerint:

$ egrep “debian” *.txt

A parancs kinyomtatta az összes sort, valamint a fájlneveket, amelyek az összes debian szót tartalmazzák .txt fájlok az aktuális könyvtárban.

3. példa: Rekurzív keresés a karakterláncban a teljes könyvtárban

Ha egy könyvtárból és annak alkönyvtáraiból az összes fájlban szeretne karakterláncot keresni, akkor ezt megteheti a -r jelző használatával az egrep paranccsal.

Szintaxis:

$ egrep -r "search_string" *

Példa:

Ebben a példában a „minta” szót keresem a teljes aktuális (Letöltések) könyvtár fájljaiban.

$ egrep -r "minta" *

Az eredmények tartalmazzák az összes sort és a fájlneveket, amelyek tartalmazzák 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: Kis- és nagybetűk közötti keresés végrehajtása

Az -i zászlóval az egrep paranccsal kinyomtathatja az eredményeket egy keresési karakterlánc alapján anélkül, hogy aggódnia kellene az eset miatt.

Szintaxis:

$ egrep -i "search_string" fájlnév

Példa:

Itt a „debian” szóra keresem, és azt akarom, hogy az eredmények a fájl összes olyan sorát jelenítsék meg, amely tartalmazza a „debian” vagy a „Debian szót”, függetlenül az esetétől.

$ egrep -i "search_string" fájlnév

Láthatja, hogy az -i zászló segített-e abban, hogy a keresési karakterláncot tartalmazó összes sort beolvassam egy kis „érzéketlen” kereséssel.

5. példa: Karakterlánc keresése teljes szóként, és nem rész-karaktersorozatként

Amikor normál esetben egy sztringet keres az egrep-en keresztül, az a sztringet tartalmazó összes szót al-karaktersorozatként kinyomtatja. Például a „be” karakterlánc keresése kinyomtatja az „on” karakterláncot tartalmazó összes szót, például „on”, „only”, „monitor”, „clone” stb. Ha azt szeretné, hogy az eredmények csak a „be” szót jelenítsék meg teljes szóként, és ne rész-karakterláncként, használhatja a -w jelölőt egrep-lel.

Szintaxis:

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

Példa:

Itt keresem a „on” karakterláncot egy mintafájlban:

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

A fenti kimenetből láthatja, hogy a „csak” szót is tartalmazza. Én azonban nem ezt akarom, mivel kizárólag a „be” szót keresem. Tehát ezt a parancsot fogom használni helyette:

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

Most a keresési eredményeim csak azokat a sorokat tartalmazzák, amelyek a „be” szót tartalmazzák teljes szóként.

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

Előfordul, hogy csak egy adott karakterláncot tartalmazó fájlneveket akarunk beolvasni, nem pedig az azt tartalmazó sorokat kinyomtatni. Ez megtehető a -l (kisbetűs L) zászlóval az egrep paranccsal.

Szintaxis:

$ egrep -l "search_string" fájlnév_minta

Példa:

Itt keresem a „minta” karakterláncot az összes .txt fájlok az aktuális könyvtárban:

$ egrep -l minta *.txt

A keresési eredmények csak a megadott karakterláncot tartalmazó fájlok nevét nyomtatják ki.

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

A keresési karakterláncot tartalmazó teljes sor nyomtatása helyett az egrep paranccsal nyomtathatja ki magát a karakterláncot is. A karaktersorozat ki lesz nyomtatva, ahányszor megjelenik a megadott fájlban.

Szintaxis:

$ egrep -o "search_string" fájlnév

Példa:

Ebben a példában az „Ez” szót keresem a fájlomban.

$ egrep -o Ez a mintafájl_.txt

Megjegyzés: A parancs ilyen használata akkor hasznos, ha egy karakterláncot keres reguláris kifejezésminta alapján. Az elkövetkező példákban részletesen elmagyarázzuk a rendszeres kifejezéseket.

8. példa: n sor megjelenítése a keresési karakterlánc előtt, után vagy körül

Néha nagyon fontos ismerni a kontextust egy fájlban, ahol egy adott karakterláncot használnak. Az egrep abban az értelemben hasznos, hogy a keresési karakterláncot tartalmazó sort, valamint az előtte, utána és környékén meghatározott számú sort is megjelenítheti.

Ez a minta szövegfájl, amelyet a következő példák ismertetésére használok:

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

Az A jelzőt a következő módon használva megjelenik a sor, amely tartalmazza a keresési karakterláncot és az N sorok számát az utána:

$ egrep -A "search_string" fájlnév

Példa:

$ egrep -A 2 "minta" mintafájl.txt

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

A B jelzőt a következő módon használva megjelenik a sor, amely tartalmazza a keresési karakterláncot és az N előtti sorok számát:

$ egrep -B "search_string" fájlnév

Példa:

$ egrep -B 2 "minta" mintafájl.txt

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

A C jelző használatával a következő módon megjelenik a keresési karakterláncot tartalmazó sor, valamint az N előtti és előtti sorok száma:

$ egrep -C "search_string" fájlnév

Példa:

$ egrep -C 2 "minta" mintafájl.txt

9. példa: A reguláris kifejezés illesztése fájlokban

Az egrep parancs erősebbé válik, amikor rendszeres kifejezéseket keres a fájlban található szilárd keresési karakterláncok helyett.

Szintaxis:

$ egrep "RegularExpressions" fájlnév

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

Ismétlés operátor Használat
? Az előző tétel előtt ? opcionális és legfeljebb egyszer illeszkedik

* A * előtti előző elem nulla vagy többször lesz egyeztetve
+ A + előtti előző elem egy vagy többször egyeztetésre kerül
n Az előző elem n-szer pontosan megegyezik.
n, Az előző elem n vagy többször egyezik
, m Az előző elem maximálisan m-szer egyezik
n, m Az előző elem legalább n-szer, de legfeljebb m-szer egyezik

Példa:

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

kezdve a „Gnome” -val és a „programok” -ig

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

Amikor a GREP_OPTIONS környezeti változót az alábbiak szerint állítja be, a kimenetet úgy kapja meg, hogy a keresési karakterlánc / minta kiemelkedik az eredményekben:

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

Ezután bármilyen módon megkeresheti a karakterláncot, amelyet a cikk példáiban leírtunk.

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

Invert keresés alatt azt értjük, hogy az egrep parancs mindent kinyomtat a fájlban, kivéve azokat a sorokat, amelyek tartalmazzák a keresési karakterláncot. A következő mintafájl segítségével elmagyarázzuk az invert keresést az egrep-en keresztül. Kinyomtattuk a fájl tartalmát a cat paranccsal:

Szintaxis:

$ egrep -v "search_string" fájlnév

Példa:

Az általunk említett mintafájlból el akarjuk hagyni azt a sort, amely a „kettő” szót tartalmazza a kimenetben, ezért a következő parancsot fogjuk használni:

$ egrep -v "two" samplefile_.txt

Láthatja, hogy a kimenet mindent tartalmaz a mintafájlból, kivéve a második sort, amely a „two” keresési karakterláncot tartalmazta.

12. példa: invert keresés végrehajtása több feltétel / keresési minta alapján

A -v jelzővel azt is megteheti, hogy az egrep parancs fordított keresést hajtson végre több keresési karakterlánc / minta alapján.

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

Szintaxis:

$ egrep -v -e "search_string" / "pattern" -e "search_string" / "pattern"
… fájl név

Példa:

Az általunk említett mintafájlból el akarjuk hagyni azokat a sorokat, amelyek tartalmazzák az „egy” és „kettő” szavakat a kimenetben, ezért a következő parancsot fogjuk használni:

$ egrep -v -e "egy" -e "kettő" mintafájl_.txt

Két szót adtunk meg az -e jelző használatának kihagyására, ezért a kimenet a következőképpen jelenik meg:

13. példa: A keresési karakterláncnak megfelelő sorok számának kinyomtatása

Ahelyett, hogy kinyomtatná a keresett karakterláncot a fájlból vagy az azt tartalmazó sorokból, az egrep paranccsal megszámolhatja és kinyomtathatja a karakterlánchoz illesztett sorok számát. Ez a számláló lekérhető a -c jelzővel az egrep paranccsal.

Szintaxis:

$ egrep -c "search_string" fájlnév

Példa:

Ebben a példában a -c jelzővel megszámoljuk azon sorok számát, amelyek a minta fájlunkban tartalmazzák az „Ez” szót:

$ egrep -c "Ez" fájlnév

Az invert keresési funkciót itt is felhasználhatja a keresési karakterláncot nem tartalmazó sorok számának kiszámításához és kinyomtatásához: 

$ grep -v -c "search_string" fájlnév

14. példa: A sztring illesztésének sorszámának megjelenítése

Az -n jelzővel megadhatja az egrep parancsot, hogy kinyomtassa az egyező sort a keresési karakterláncot tartalmazó sorszámmal együtt.

Szintaxis:

$ grep -n "search_string" fájlnév

Példa:

$ grep -n "Ez" mintafájl_.txt

Láthatja, hogyan jelennek meg a sorszámok a keresési eredmények között.

15. példa: A keresési karakterlánc egyezésének helyének megjelenítése a fájlban

Ha meg szeretné tudni, hogy a fájlban melyik helyen található a keresési karakterlánc, használhatja a -b jelzőt az egrep paranccsal.

$ grep -o -b "search_string" fájlnév

Példa:

$ grep -o -b "Ez" mintafájl_.txt

A keresési eredmények kinyomtatják a fájl bájt eltolását, ahol a keresett szó létezik.Ez az egrep parancs részletes használata volt. A cikkben ismertetett jelzők kombinációjának használatával értelmesebb és összetettebb kereséseket hajthat végre a fájljain.

Sid Meier Civilization VI letöltése és lejátszása Linuxon
Bevezetés a játékba A Civilization 6 egy modern felvétel a Age of Empires játékok sorozatában bevezetett klasszikus koncepcióra. Az ötlet meglehetősen...
A Doom telepítése és lejátszása Linuxon
Bevezetés a Doom-ba A Doom sorozat a 90-es években keletkezett az eredeti Doom megjelenése után. Azonnali sláger volt, és ettől kezdve a játéksorozat ...
Vulkan Linux felhasználók számára
A grafikus kártyák minden új generációjával azt látjuk, hogy a játékfejlesztők átlépik a grafikus hűség határait, és egy lépéssel közelebb kerülnek a ...