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évPélda:
$ egrep debian mintafájl.txtEbben 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_mintaPé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évPé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évPé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_mintaPé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évPé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 -APé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 -BPé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 -CPé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évMagyará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évPé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_.txtKé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évPé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évPé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évPé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.