Linux egrep parancs

Frissítve:

Unix-szerű operációs rendszereken az egrep parancs egy szövegmintát keres, kiterjesztett reguláris kifejezéseket használva a megfeleltetéshez. Az egrep futtatása egyenértékű a grep futtatásával a -E kapcsolóval.

Ez az oldal az egrep GNU/Linux verziójával foglalkozik.

Szintaktika

egrep PATTERN 

Options

-A NUM,
–after-context=NUM
NUM sornyi hátramaradt kontextust nyomtat a megfelelő sorok után. Az egybefüggő találati csoportok közé — tartalmazó sort helyez.
-a, –text Bináris fájl feldolgozása úgy, mintha szöveg lenne; ez egyenértékű a –binary-files=text kapcsolóval.
-B NUM,
–before-context=NUM
NUM sornyi vezető kontextust nyomtat a találati sorok előtt. Egymással összefüggő találati csoportok közé — tartalmazó sort helyez.
-C NUM, –context=NUM NUM sornyi kimeneti kontextust nyomtat. Egybefüggő találatcsoportok közé —t tartalmazó sort helyez.
-b, –byte-offset A bemeneti fájlban a kimenet minden sora előtt a bájteltávolságot nyomtatja ki.
–binary-files=TYPE Ha egy fájl első néhány bájtja arra utal, hogy a fájl bináris adatokat tartalmaz, feltételezzük, hogy a fájl TYPE típusú. Alapértelmezés szerint a TYPE bináris, és a grep általában vagy egy egysoros üzenetet ad ki arról, hogy a bináris fájl egyezik, vagy nem ad ki üzenetet, ha nincs egyezés. Ha a TYPE értéke without-match, a grep feltételezi, hogy a bináris fájl nem egyezik; ez egyenértékű a -I kapcsolóval. Ha a TYPE text, a grep a bináris fájlt úgy dolgozza fel, mintha szöveg lenne; ez a -a opcióval egyenértékű. Figyelmeztetés: A grep –binary-files=text opció bináris szemetet adhat ki, aminek kellemetlen mellékhatásai lehetnek, ha a kimenet egy terminál, és ha a terminál vezérlő egyes részeit parancsként értelmezi.
–colour,
–color
A megfelelő karakterláncot a GREP_COLOR környezeti változóban található jelölővel veszi körül. WHEN lehet ‘never’, ‘always’ vagy ‘auto’
-c, –count Kikapcsolja a normál kimenetet; ehelyett kiírja a megfelelő sorok számát minden egyes bemeneti fájlhoz. A -v, –invert-match opcióval (lásd alább) megszámolja a nem egyező sorokat.
-D ACTION,
–devices=ACTION
Ha a bemeneti fájl egy eszköz, FIFO vagy socket, használja az ACTION-t a feldolgozásához. Alapértelmezés szerint az ACTION read, ami azt jelenti, hogy az eszközök beolvasása úgy történik, mintha közönséges fájlok lennének. Ha az ACTION skip, akkor az eszközök némán kihagyásra kerülnek.
-d ACTION,
–directories=ACTION
Ha a bemeneti fájl egy könyvtár, akkor az ACTION-t használja a feldolgozásához. Alapértelmezés szerint az ACTION read, ami azt jelenti, hogy a könyvtárakat úgy olvassa be, mintha közönséges fájlok lennének. Ha az ACTION értéke skip, akkor a könyvtárak némán kihagyásra kerülnek. Ha az ACTION recurse, akkor a grep minden könyvtár alatt rekurzívan beolvassa az összes fájlt; ez egyenértékű a -r kapcsolóval.
-e PATTERN,
–regexp=PATTERN
Mintaként a PATTERN-t használja; hasznos a “-“-vel kezdődő minták védelmére.
-F, –fixed-strings A PATTERN-t a megfeleltethető, újsorral elválasztott fix karakterláncok listájaként értelmezi.
-P, –perl-regexp A PATTERN-t Perl reguláris kifejezésként értelmezi.
-f FILE, –file=FILE Minták kinyerése a FILE-ból, soronként egyet. Az üres fájl nulla mintát tartalmaz, ezért semmivel sem egyezik.
-G, –basic-regexp A PATTERN-t alapvető reguláris kifejezésként értelmezi (lásd alább). Ez az alapértelmezett.
-H, –with-filename Kiírja a fájl nevét minden egyes találathoz.
-h, –no-filename Kikapcsolja a fájlnevek előtagozását a kimeneten, ha több fájlt keres.
–help Kiad egy rövid súgóüzenetet.
-I Bináris fájl feldolgozása úgy, mintha nem tartalmazna megfelelő adatokat; ez egyenértékű a –binary-files=without-match opcióval.
-i, –ignore-case A nagy- és kisbetűs megkülönböztetés figyelmen kívül hagyása mind a PATTERN, mind a bemeneti fájlokban.
-L,
–files-without-match
A normál kimenet elnyomása; ehelyett kiírja minden olyan bemeneti fájl nevét, amelyről normál esetben nem nyomtatna ki kimenetet. A beolvasás az első találatnál leáll.
-l,–files-with-matches A normál kimenet elnyomása; ehelyett minden olyan bemeneti fájl nevét kiírja, amelyből normális esetben kimenetet nyomtatna. A beolvasás az első egyezésnél leáll.
-m NUM,
–max-count=NUM
NUM egyező sor után leállítja a fájl olvasását. Ha a bemenet egy reguláris fájl szabványos bemenete, és NUM egyező sor kerül kiadásra, a grep biztosítja, hogy a szabványos bemenet az utolsó egyező sor utánra kerüljön, mielőtt kilép, függetlenül a hátul lévő kontextus sorok jelenlététől. Ez lehetővé teszi a hívó folyamat számára a keresés folytatását. Ha a grep a NUM egyező sor után megáll, akkor minden hátramaradt kontextusvonalat kiad. Ha a -c vagy –count opciót is használjuk, a grep nem ad ki NUM-nál nagyobb számot. Ha a -v vagy –invert-match opciót is használjuk, a grep leáll a NUM nem egyező sorok kiadása után.
–mmap Ha lehetséges, használjuk az mmap rendszerhívást a bemenet olvasásához az alapértelmezett read rendszerhívás helyett. Bizonyos helyzetekben a –mmap jobb teljesítményt nyújt. A –mmap azonban meghatározatlan viselkedést okozhat (beleértve a magdömpinget is), ha a grep működése közben a bemeneti fájl zsugorodik, vagy ha I/O hiba lép fel.
-n, –line-number A kimenet minden sorát a bemeneti fájlon belüli sorszámmal jelöli.
-o, –only-matching A megfelelő sornak csak azt a részét jeleníti meg, amelyik megfelel a PATTERN-nek.
–label=LABEL A ténylegesen a standard bemenetről érkező bemenetet a LABEL fájlból érkező bemenetként jeleníti meg. Ez különösen hasznos az olyan eszközöknél, mint a zgrep, pl. gzip -cd foo.gz |grep -H –label=foo valami
–line-buffered Sorpufferelés használata. Ez teljesítménycsökkenéssel járhat.
-q, –quiet, –silent Legyen csendes; ne írjon semmit a standard kimenetre. Azonnal kilép nulla státusszal, ha bármilyen egyezést talál, még akkor is, ha hibát észlelt. Lásd még a -s vagy –no-messages opciót.
-R, -r, –recursive Minden könyvtár alatti összes fájl beolvasása rekurzívan; ez egyenértékű a -d recurse opcióval. Módosította:
–include=PATTERN
Könyvtárakban csak a PATTERN-nek megfelelő fájlt keresi.
–exclude=PATTERN
Könyvtárakban a PATTERN-nek megfelelő fájlt kihagyja.
-s, –no-messages A nem létező vagy nem olvasható fájlokra vonatkozó hibaüzenetek elhallgatása. Hordozhatósági megjegyzés: a GNU grep-től eltérően a hagyományos grep nem felelt meg a POSIX.2 szabványnak, mivel a hagyományos grep nem rendelkezett -q opcióval, és az -s opciója úgy viselkedett, mint a GNU grep -q opciója. A hagyományos grep-hez hordozhatónak szánt Shell szkripteknek kerülniük kell mind a -q, mind a -s opciót, és helyette a kimenetet a /dev/null-ra kell átirányítaniuk.
-U, –binary A fájl(ok) binárisként való kezelése. Alapértelmezés szerint MS-DOS és Microsoft Windows alatt a grep a fájl típusát a fájlból beolvasott első 32 KB tartalmának megnézésével találja ki. Ha a grep úgy dönt, hogy a fájl szöveges fájl, akkor eltávolítja a CR karaktereket az eredeti fájl tartalmából (hogy a ^ és $ típusú reguláris kifejezések helyesen működjenek). A -U megadása felülbírálja ezt a találgatást, és az összes fájlt szó szerint beolvassa és átadja a megfeleltetési mechanizmusnak; ha a fájl szöveges fájl, és minden sor végén CR/LF párok vannak, ez néhány reguláris kifejezés sikertelenségét okozza. Ennek az opciónak nincs hatása az MS-DOS és MS-Windows platformokon kívül.
-u, –unix-byte-offsets Unix-stílusú byte-offsets megjelenítése. Ez a kapcsoló azt eredményezi, hogy a grep úgy adja meg a bájteltolásokat, mintha a fájl Unix-stílusú szöveges fájl lenne, azaz a CR karakterek eltávolításával. Ez az eredmény megegyezik a grep Unix gépen történő futtatásával. Ennek a kapcsolónak nincs hatása, hacsak nem használjuk a -b kapcsolót is; nincs hatása az MS-DOS és MS-Windows platformokon kívül.
-V, –version A grep verziószámának kiírása a standard hibaüzenetre. Ezt a verziószámot minden hibajelentésnek tartalmaznia kell (lásd alább).
-v, –invert-match Invertálja az egyezés értelmét, hogy a nem egyező sorokat válassza ki.
-w, –word-regexp Csak azokat a sorokat válassza ki, amelyek egész szavakat alkotó egyezéseket tartalmaznak. A teszt az, hogy a megfelelő részláncnak vagy a sor elején kell állnia, vagy egy nem szóösszetevő karakternek kell megelőznie. Hasonlóképpen, vagy a sor végén kell állnia, vagy egy nem szóösszetevő karakternek kell követnie. Szóösszetevő karakterek a betűk, számjegyek és az aláhúzás.
-x, –line-regexp Kizárólag azokat az egyezéseket választja ki, amelyek pontosan megfelelnek az egész sornak.
-y A -i elavult szinonimája.
-Z, –null A fájlnevet általában követő karakter helyett egy nulla bájtot (az ASCII NULL karaktert) ad ki. Például a grep -lZ minden fájlnév után egy nulla bájtot ad ki a szokásos újsor helyett. Ez az opció egyértelművé teszi a kimenetet, még akkor is, ha a fájlnevek szokatlan karaktereket, például újsorokat tartalmaznak. Ez az opció olyan parancsokkal együtt használható, mint a find -print0, perl -0, sort -z és xargs -0, tetszőleges fájlnevek feldolgozására, még az újsor karaktereket tartalmazó fájlnevek feldolgozására is.

Reguláris kifejezések

A reguláris kifejezés egy minta, amely karakterláncok egy halmazát írja le. A reguláris kifejezések az aritmetikai kifejezésekhez hasonlóan épülnek fel, különböző operátorokat használva kisebb kifejezések kombinálására.

A Grep a reguláris kifejezések szintaxisának két különböző változatát érti: Az “alap” és a “kiterjesztett” változatot. A GNU grep-ben nincs különbség az elérhető funkcionalitásban, ha bármelyik szintaxist használjuk. Más implementációkban az alap reguláris kifejezések kevésbé hatékonyak. A következő leírás az egrepben használt kiterjesztett reguláris kifejezésekre vonatkozik; az alapvető reguláris kifejezésekkel kapcsolatos különbségeket ezután foglaljuk össze.

Az alapvető építőelemek az egyetlen karakterre illeszkedő reguláris kifejezések. A legtöbb karakter, beleértve az összes betűt és számjegyet, olyan reguláris kifejezések, amelyek önmagukra illeszkednek. Bármely speciális jelentéssel rendelkező metakarakter idézhető, ha egy backslash előzi meg.

A zárójeles kifejezés a . A lista bármelyik karakterére illik; ha a lista első karaktere a ^ pont, akkor a listán kívüli bármelyik karakterre illik. Például a reguláris kifejezés minden egyes számjegyre illik.

A zárójeles kifejezésen belül a tartománykifejezés két, kötőjellel (“-“) elválasztott karakterből áll. Minden olyan karakterrel egyezik, amely a két karakter közé rendeződik, beleértve a helyi karakterkészletet is, a helyi karakterek összevetési sorrendjét és karakterkészletét használva. Például az alapértelmezett C nyelvterületen a . Sok helyi rendszer a karaktereket szótári sorrendbe rendezi, és ezekben a helyi rendszerekben gyakran nem egyenértékű a ; például lehet, hogy egyenértékű a , -val. A zárójeles kifejezések hagyományos értelmezésének eléréséhez használhatja a C nyelvterületet, ha az LC_ALL környezeti változót a C.

értékre állítja.

A zárójeles kifejezésekben a karakterek bizonyos megnevezett osztályai előre definiáltak, a következők szerint. Nevük magától értetődő, és ezek a következők: , , , , , , , , , , , , , , és . Például a ] azt jelenti , kivéve, hogy az utóbbi forma a C nyelvterület és az ASCII karakterkódolás függvénye, míg az előbbi független a nyelvterülettől és a karakterkészlettől. (Vegyük észre, hogy a zárójelek ezekben az osztálynevekben a szimbolikus nevek részét képezik, és a zárójeles listát határoló zárójelek mellett kell szerepeltetni őket). A legtöbb metakarakter elveszíti speciális jelentését a listákon belül. Egy szóvégi ] beillesztéséhez helyezze azt a lista elejére. Hasonlóképpen, ha egy ^ betűjelet akarunk felvenni, akkor bárhová tegyük, de ne az első helyre. Végül, ha egy szó szerinti – karaktert akarunk beilleszteni, akkor az utolsó helyre tegyük.

A pont . bármely egyetlen karakterrel megegyezik. A \w szimbólum a ] szinonimája, a \W pedig a ] szinonimája.

A ^ és a dollárjel (“$”) olyan metakarakterek, amelyek a sor elején és végén lévő üres karakterláncra illeszkednek. A \< és \> jelek a szó elején és végén lévő üres karakterláncot jelölik. Az \b szimbólum a szó szélén lévő üres karakterláncra illeszkedik, az \B pedig az üres karakterláncra, amennyiben az nem a szó szélén van.

A reguláris kifejezést számos ismétlési operátor egyike követheti:

? Az előző elem opcionális és legfeljebb egyszer illeszkedik.
* Az előző elem nulla vagy többször illeszkedik.
+ Az előző elem egy vagy többször illeszkedik.
{n} Az előző elem pontosan n-szer illeszkedik.
{n,} Az előző elem n vagy többször illeszkedik.
{n,m} Az előző elem legalább n-szer, de legfeljebb m-szer illeszkedik.

Két reguláris kifejezés összekapcsolható; az így kapott reguláris kifejezés illeszkedik bármely olyan karakterláncra, amely két olyan részlánc összekapcsolásával jön létre, amelyek megfelelnek az összekapcsolt részkifejezéseknek.

Két reguláris kifejezés összekapcsolható a | infix operátorral; az eredményül kapott reguláris kifejezés bármelyik alkifejezésnek megfelelő karakterláncra illeszkedik.

A többszörözés elsőbbséget élvez az összekapcsolással szemben, amely viszont elsőbbséget élvez a váltakozással szemben. Az egész részkifejezést zárójelbe lehet tenni, hogy felülbíráljuk ezeket az elsőbbségi szabályokat.

A visszahivatkozás \n, ahol n egy számjegy, a szabályos kifejezés n-edik zárójeles részkifejezése által előzőleg illesztett részláncra illik.

Az alapvető szabályos kifejezésekben a ?, +, {, |, (, és ) metakarakterek elveszítik speciális jelentésüket; ehelyett a zárójeles változatokat használjuk \\?, \+, \{, \|, \(, és \).

A hagyományos egrep nem támogatta a { metakaraktert, és néhány egrep implementáció támogatja helyette az \{-t, ezért a hordozható szkripteknek kerülniük kell az {-t az egrep mintákban, és a szó szerinti {-t kell használniuk.

A GNU egrep úgy próbálja támogatni a hagyományos használatot, hogy feltételezi, hogy az { nem különleges, ha egy érvénytelen intervallum specifikáció kezdete lenne. Például a shell egrep ‘{1’ parancsa a kétkarakteres {1 karakterláncot keresi ahelyett, hogy a reguláris kifejezés szintaktikai hibáját jelezné. A POSIX.2 ezt a viselkedést kiterjesztésként engedélyezi, de a hordozható szkripteknek kerülniük kell.

Környezeti változók

A grep viselkedését a következő környezeti változók befolyásolják:

A locale LC_foo meghatározása a három környezeti változó LC_ALL, LC_foo, LANG vizsgálatával történik, ebben a sorrendben. E változók közül az elsőként beállított változó határozza meg a nyelvjárást. Ha például az LC_ALL nincs beállítva, de az LC_MESSAGES pt_BR-re van állítva, akkor a brazil portugál lesz az LC_MESSAGES nyelvterület. A C nyelvterületet használja, ha egyik környezeti változó sincs beállítva, vagy ha a nyelvterület-katalógus nincs telepítve, vagy ha a grep nem nemzeti nyelvi támogatással (NLS) lett lefordítva.

GREP_OPTIONS

Ez a változó adja meg az alapértelmezett opciókat, amelyek az explicit opciók elé kerülnek. Ha például a GREP_OPTIONS értéke ‘–binary-files=without-match –directories=skip’, a grep úgy viselkedik, mintha a két opció –binary-files=without-match és –directories=skip minden explicit opció előtt lett volna megadva. Az opciókat szóköz választja el egymástól. A backslash elkerüli a következő karaktert, így használható szóközöket vagy backslash-t tartalmazó opció megadására.

GREP_COLOR

Meghatározza a kiemelés jelölését.

LC_ALL, LC_COLLATE, LANG

Ezek a változók adják meg az LC_COLLATE lokalitást, amely meghatározza a tartománykifejezések értelmezéséhez használt kollációs sorozatot, mint pl. .

LC_ALL, LC_CTYPE, LANG

Ezek a változók adják meg az LC_CTYPE lokalitást, amely meghatározza a karakterek típusát, pl., mely karakterek számítanak szóköznek.

LC_ALL, LC_MESSAGES, LANG

Ezek a változók határozzák meg az LC_MESSAGES nyelvi tartományt, amely meghatározza a grep által az üzenetekhez használt nyelvet. Az alapértelmezett C locale az amerikai angol nyelvű üzeneteket használja.

POSIXLY_CORRECT

Ha be van állítva, a grep a POSIX.2 előírásainak megfelelően viselkedik; ellenkező esetben a grep inkább más GNU programokhoz hasonlóan viselkedik. A POSIX.2 előírja, hogy a fájlneveket követő opciókat fájlnévként kell kezelni; alapértelmezés szerint az ilyen opciók az operanduslista elejére permutálódnak, és opcióként kezelendők. A POSIX.2 azt is megköveteli, hogy az el nem ismert opciókat “illegálisnak” diagnosztizálják, de mivel ezek nem igazán törvénysértőek, az alapértelmezés szerint “érvénytelennek” diagnosztizálják őket. A POSIXLY_CORRECT kikapcsolja az alább ismertetett _N_GNU_nonoption_argv_flags_-t is.

_N_GNU_nonoption_argv_flags_

(Itt N a grep numerikus folyamatazonosítója.) Ha e környezeti változó értékének i-edik karaktere 1, akkor a grep i-edik operandusát ne tekintsük opciónak, még ha annak is tűnik. A shell minden egyes futtatott parancshoz elhelyezheti ezt a változót a környezetében, megadva, hogy mely operandusok a fájlnév vadkártyás kiterjesztésének eredményei, és ezért nem kezelhetők opcióként. Ez a viselkedés csak a GNU C könyvtárral érhető el, és csak akkor, ha a POSIXLY_CORRECT nincs beállítva.

Példák

egrep "support|help|windows" myfile.txt

Támogató segítség és ablakok mintáinak keresése a myfile.txt fájlban.

egrep '^+$' myfile.txt

A myfile.txt fájl minden olyan sorának keresése, amely olyan betűszóval kezdődik, amely egyben a sor vége is.

egrep -c '^begin|end$' myfile.txt

Megszámolja a myfile.txt állományban azon sorok számát, amelyek a ‘begin’ szóval kezdődnek vagy a ‘end’ szóval végződnek.

fgrep – Olyan szöveg szűrése, amely megfelel egy rögzített karakterláncnak.
grep – Olyan szöveg szűrése, amely megfelel egy reguláris kifejezésnek.
sed – Szöveg szűrésére és átalakítására szolgáló segédprogram.
sh – A Bourne shell parancsértelmező.

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

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