egrep

GREP(1)                      General Commands Manual                     GREP(1)



JMÉNO
       grep, egrep, fgrep - tiskne řádky, které odpovídají zadanému vzoru

POUŽITÍ
       grep [volby] VZOR [SOUBOR...]
       grep [volby] [-e VZOR | -f SOUBOR] [SOUBOR...]

POPIS
       Grep prohledává zadaný vstup SOUBOR (nebo standardní vstup, pokud nejsou
       zadány žádné soubory nebo je zadán soubor -)  a hledá řádky obsahující
       zadaný VZOR.  Ve výchozím nastavení grep vypisuje řádky, které vzoru
       odpovídají.

       Dostupné jsou navíc dvě varianty programu - egrep a fgrep.  Chování
       programu egrep je stejné jako grep -E, chování programu fgrep je stejné
       jako grep -F.

VOLBY
       -A POČET, --after-context=POČET
              Tiskni POČET řádků, které následují po platném (odpovídajícím)
              řádku.  Mezi souvislé platné výsledky vkládá řádky obsahující --.

       -a, --text
              Pracuj s binárním souborem jako by to byl text; ekvivalentní k
              volbě --binary-files=text.

       -B POČET, --before-context=POČET
              Tiskni POČET řádků které předcházejí platnému řádku.  Mezi
              souvislé platné výsledky vkládá řádky obsahující --.

       -C POČET, --context=POČET
              Tiskni POČET řádků ke každému platnému řádku.  Mezi souvislé
              platné výsledky vkládá řádky obsahující --.

       -b, --byte-offset
              Tiskni offset bajtu ve vstupním souboru před každým řádkem
              výstupu.

       --binary-files=TYP
              Jestliže podle prvních několika bajtů obsahuje soubor binární
              data, předpokládej, že je typu TYP.  Výchozím nastavením TYP je
              binary a grep standardně vypíše buď jednořádkovou zprávu, že
              binární soubor odpovídá, nebo žádnou zprávu pokud neodpovídá.
              Jestliže je TYP without-match, grep předpokládá, že binární
              soubory neodpovídají; je to stejné jako volba -I.  Jestliže je TYP
              text, grep zpracovává binární soubor, jako by to byl text; stejné
              jako volba -a.  Pozor: grep --binary-files=text může způsobit, že
              se budou vypisovat nesmyslné binární znaky, což může mít
              nepříjemné vedlejší účinky pokud je výstupem terminál a ovladač
              terminálu začne některé znaky interpretovat jako příkazy.

       --colour[=KDY], --color[=KDY]
              Obklopí platný řetězec značkou z proměnné prostředí GREP_COLOR.
              KDY může být `never', `always' nebo `auto'

       -c, --count
              Potlač normální výstup; místo toho napiš počet odpovídajících
              řádků pro každý vstupní soubor.  S volbou -v, --invert-match (viz
              níže), počítej neodpovídající řádky.

       -D AKCE, --devices=AKCE
              Pokud je vstupním souborem zařízení, FIFO nebo socket, použij AKCI
              k jeho zpracování. Výchozím nastavením AKCE je read, to znamená,
              že zařízení se čtou jako by to byly běžné soubory.  Jestliže AKCE
              je skip, zařízení se mlčky přeskočí.

       -d AKCE, --directories=AKCE
              Pokud je vstupním souborem adresář, použij AKCI k jeho zpracování.
              Výchozím nastavením AKCE je read, to znamená, že adresáře se čtou
              jako by to byly běžné soubory.  Jestliže AKCE je skip, adresáře se
              mlčky přeskočí.  Jestliže AKCE je recurse, grep čte rekurzivně
              všechny soubory v každém adresáři; je to stejné jako volba -r.

       -E, --extended-regexp
              Považuj VÝRAZ za rozšířený regulární výraz (viz níže).

       -e VÝRAZ, --regexp=VÝRAZ
              Jako vzor použij VÝRAZ; užitečné pro zachování vzorů začínajících
              -.

       -F, --fixed-strings
              Považuj VÝRAZ za seznam pevných řetězců oddělených znaky konce
              řádku, ze kterých může odpovídat kterýkoliv.  -P, --perl-regexp
              Považuj VÝRAZ za regulární výraz Perlu.

       -f SOUBOR, --file=SOUBOR
              Načte vzory ze souboru SOUBOR, na každém řádku jeden.  Prázdný
              soubor obsahuje nula vzorů a tedy neodpovídá ničemu.

       -G, --basic-regexp
              Považuj VÝRAZ za základní regulární výraz (viz níže). Toto je
              výchozí nastavení.

       -H, --with-filename
              Tiskni jméno souboru pro každou shodu.

       -h, --no-filename
              Potlač vkládání jmen souborů do výstupu při prohledávání více
              souborů.

       --help Vytiskni stručnou nápovědu.

       -I     Zpracuj binární soubor jako by neobsahoval shody; to je stejné
              jako volba --binary-files=without-match.

       -i, --ignore-case
              Nerozlišuj velká a malá písmena ve VÝRAZU ani ve vstupních
              souborech.

       -L, --files-without-match
              Potlač normální výstup; místo toho tiskni jméno každého souboru,
              ze kterého by se jinak žádný výstup netiskl. Prohledávání skončí s
              první shodou.

       -l, --files-with-matches
              Potlač normální výstup; místo toho tiskni jméno každého souboru,
              ze kterého by se jinak tiskl nějaký výstup. Prohledávání skončí s
              první shodou.

       -m POČET, --max-count=POČET
              Přestaň číst soubor po dosažení POČTU odpovídajících řádků. Je-li
              vstupem standardní vstup z obyčejného souboru, a je vytištěno
              POČET odpovídajících řádků, grep zajistí, že standardní vstup bude
              před ukončením nastaven právě po posledním odpovídajícím řádku,
              bez ohledu na přítomnost následujících řádků kontextu.  Tak je
              možné, aby volající proces hledání obnovil.  Když grep po dosažení
              POČTU odpovídajících řádků zastaví, vypíše řádky kontextu, které
              následují.  Pokud je zároveň použita volba -c nebo --count,
              program grep nevypíše více shod než je POČET.  Pokud je zároveň
              použita volba -v nebo --invert-match program, grep skončí po
              vypsání POČTU neodpovídajících řádků.

       --mmap Pokud je to možné, použij systémové volání mmap(2)  ke čtení
              vstupních dat, místo výchozího read(2).  V některých případech
              může --mmap zlepšit výkon. Na druhou stranu --mmap může způsobit
              nedefinované chování (včetně core dump), jestliže se vstupní
              soubor za běhu programu grep zmenší nebo pokud nastane chyba
              vstupu/výstupu.

       -n, --line-number
              Před každý řádek výstupu přidej jeho číslo v příslušném vstupním
              souboru.

       -o, --only-matching
              Vypisuj jen tu část odpovídajícího řádku, která je odpovídá VZORU.

       --label=LABEL
              Zobrazuj vstup pocházející ze standardního vstupu jakoby pocházel
              ze souboru LABEL. To je zvláště užitečné pro nástroje jako je
              zgrep, např.  gzip -cd foo.gz |grep --label=foo něco

       --line-buffering
              Použij line buffering, může negativně ovlivnit výkon.

       -q, --quiet, --silent
              Tiše; potlač normální výstup. Prohledávání skončí s první shodou,
              s návratovou hodnotou nula, i když byla detekována nějaká chyba.
              Viz také volba -s nebo --no-messages uvedená dále.

       -R, -r, --recursive
              Rekurzivně načti všechny soubory v každém adresáři; to je stejné
              jako volba -d recurse.

          --include=VZOR
              Rekurzivně procházej adresáře, prohledávej pouze soubory
              odpovídající VZORU.

          --exclude=VZOR
              Rekurzivně procházej adresáře, přeskoč soubory odpovídající VZORU.

       -s, --no-messages
              Potlač chybové hlášky o neexistujících nebo nečitelných souborech.
              Poznámka o přenositelnosti: na rozdíl od GNU grepu, tradiční grep
              neodpovídal specifikaci POSIX.2, protože neměl volbu -q a jeho
              volba -s se chovala jako volba -q GNU grepu.  Shellové skripty
              které mají být přenositelné na tradiční grep, by se měly voleb -q
              a -s vyvarovat a přesměrovat místo toho výstup do /dev/null.

       -U, --binary
              Pracuj se soubory jako s binárními. Normálně typ souboru pod
              MS-DOS a MS-Windows určuje grep tak, že se podívá na prvních 32KB
              dat přečtených ze souboru. Když grep rozhodne, že soubor je
              textový, vynechá z původního obsahu znaky CR (aby nepřestaly
              správně fungovat regulární výrazy obsahující ^ a $ ). Uvedením
              volby -U se toto pravidlo ruší a všechny soubory se předají
              porovnávacímu mechanismu doslovně. Pokud obsahuje soubor text s
              páry CR/LF na koncích řádků, způsobí to, že některé regulární
              výrazy přestanou fungovat. Tato volba nemá žádný účinek na
              platformách jiných než MS-DOS a MS-Windows.

       -u, --unix-byte-offsets
              Hlásit offsety jako v Unixu. Tento přepínač zajistí, že grep bude
              tisknout offsety bajtů jako by soubor byl textový soubor v Unixu,
              tedy bez znaků CR.  To znamená, že výsledky grep budou stejné jako
              v systému Unix. Tato volba nemá žádný efekt bez současného použití
              volby -b; také nemá efekt na platformách jiných než MS-DOS a
              MS-Windows.

       -V, --version
              Vytiskni verzi programu grep na chybový výstup. Verze by měla být
              uvedena ve všech hlášeních chyb (viz níže).

       -v, --invert-match
              Převrať význam shody - vyberou se řádky, které vzoru neodpovídají.

       -w, --word-regexp
              Vyber jen řádky ve kterých se shoduje celé samostatné slovo.
              Odpovídající řetězec musí být buď na začátku řádku nebo mít před
              sebou znak který se nebere jako součást slova. Podobně musí
              řetězec být buď na konci řádku nebo za ním musí následovat znak
              který se nebere jako součást slova. Znaky které se považují za
              části slov jsou písmena, číslice a podtržítko.

       -x, --line-regexp
              Vyber jen shody zahrnující celý řádek.

       -y     Zastaralá alternativa pro -i.

       -Z, --null
              Vytiskni nulový bajt (znak ASCII NUL)  místo znaku, který normálně
              následuje po jménech souborů. Například grep -lZ píše nulový bajt
              po každém názvu souboru místo obvyklého znaku konce řádku.  Tato
              volba zajistí jednoznačnost výstupu i v případě, že názvy souborů
              obsahují neobvyklé znaky jako znaky konce řádku. Tuto volbu lze
              použít pro příkazy jako find -print0, perl -0, sort -z a xargs -0,
              ke zpracování libovolných jmen souborů včetně těch, které obsahují
              znaky konce řádku.

REGULÁRNÍ VÝRAZY
       Regulární výraz je vzor, který popisuje množinu řetězců. Regulární výrazy
       se píší (podobně jako aritmetické výrazy) pomocí různých operátorů, které
       dávají dohromady menší výrazy.

       Grep zná dvě různé verze syntaxe pro regulární výrazy: “základní” a
       “rozšířené.” Pro GNU grep není v těchto dvou verzích žádný rozdíl co se
       týče funkčnosti. V jiných implementacích jsou základní regulární výrazy
       slabší. Následující popis platí pro rozšířené regulární výrazy; rozdíly
       pro základní regulární výrazy jsou uvedeny na konci.

       Základním stavebním kamenem jsou regulární výrazy, které odpovídají
       jedinému znaku. Většina znaků, včetně všech písmen a číslic, jsou samy o
       sobě regulárními výrazy, které se shodují samy se sebou. Kterýkoli
       metaznak se zvláštním významem může být uveden ve svém původním významu
       tak, že se před něj napíše zpětné lomítko.

       Seznam znaků v [ a ] odpovídá jakémukoli jednotlivému znaku ze seznamu;
       když je prvním znakem seznamu stříška ^, potom seznam odpovídá jakémukoli
       znaku který v seznamu není.  Například regulární výraz [0123456789]
       odpovídá jedné libovolné číslici.

       Rozsah znaků lze specifikovat prvním a posledním znakem, oddělenými
       pomlčkou. Odpovídá jednomu znaku, který je mezi uvedenými dvěma znaky
       včetně, za použití řazení a znakové sady podle locale.  Např. ve výchozím
       locale C je [a-d] ekvivalentní zápisu [abcd].  V mnoha locale jsou znaky
       tříděny slovníkově a typicky v nich [a-d] není ekvivalentní [abcd]; může
       být např. ekvivalentní [aBbCcDd].  Pro použití tradiční interpretace
       těchto výrazů je možné použít C locale nastavením proměnné prostředí
       LC_ALL na hodnotu C.

       Jsou také přednastaveny některé skupiny znaků: [:alnum:], [:alpha:],
       [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:],
       [:space:], [:upper:] a [:xdigit:] jsou postupně písmena a číslice,
       písmena, kontrolní znaky, číslice, obrázkové znaky, malá písmena,
       tisknutelné znaky, interpunkční znaménka, mezery, velká písmena a číslice
       šestnáctkové soustavy.  Například [[:alnum:]] je stejné jako [0-9A-Za-z],
       až na to, že druhý vzor závisí na C locale kódování znaků ASCII, zatímco
       první je nezávislý na locale i znakové sadě (závorky v názvech skupin
       jsou součástí jejich symbolických jmen a musí být uvedené uvnitř závorek
       uzavírajících seznam).  Většina metaznaků ztrácí v seznamech svůj
       zvláštní význam. K přidání znaku ] do seznamu stačí uvést ho jako první.
       Podobně znak ^ stačí uvést na jiném než prvním místě. Konečně znak - se
       uvede jako poslední.

       Tečka . odpovídá jednomu libovolnému znaku.  Znak \w je synonymem pro
       [[:alnum:]] a \W je synonymem pro [^[:alnum]].

       Stříška ^ a znak dolaru $ jsou metaznaky, které odpovídají prázdnému
       řetězci na začátku, resp. na konci řádku.  Symboly \< a \> označují
       prázdné řetězce na začátku, resp. na konci slova.  Symbol \b odpovídá
       prázdnému řetězci na hranici slova a \B odpovídá prázdnému řetězci který
       není na hranici slova.

       Regulární výraz může mít za sebou jeden z opakovacích operátorů:
       ?      Předcházející položka je volitelná a obsažená nejvýše jednou (tj.
              jednou nebo ani jednou).
       *      Předcházející položka je volitelná a obsažená v libovolném počtu
              (tj. nula- nebo vícekrát).
       +      Předcházející položka je obsažena jednou nebo vícekrát.
       {n}    Předcházející položka je obsažena právě n krát.
       {n,}   Předcházející položka je obsažena n nebo vícekrát.
       {n,m}  Předcházející položka je obsažena alespoň n krát, ale ne více než
              m krát.

       Dva regulární výrazy se dají přímo spojit; výsledný regulární výraz
       odpovídá libovolnému řetězci vzniklému spojením dvou jiných, které
       odpovídají původním dvěma regulárním výrazům.

       Dva regulární výrazy lze složit pevným operátorem |; výsledný regulární
       výraz odpovídá řetězci, který se shoduje s kterýmkoliv z uvedených
       regulárních výrazů.

       Opakování má přednost před spojením, které má zase přednost před
       střídáním.  Celý podvýraz stačí uzavřít do závorek aby se tato přednost
       zrušila.

       Zpětný odkaz \n, kde n je číslice, odpovídá podřetězci, který byl předtím
       porovnáván a vyhodnocen jako shodný s n-tým podvýrazem odděleným
       závorkami od zbytku regulárního výrazu.

       V základních regulárních výrazech ztrácejí metaznaky ?, +, {, |, (, a )
       své zvláštní významy; místo nich se dají použít verze se zpětným lomítkem
       \?, \+, \{, \|, \(, a \).

       Tradiční egrep nepodporoval metaznak { a některé implementace egrep místo
       toho podporovaly \{.  Přenositelné skripty by tedy neměly { ve vzorech
       pro egrep používat a místo toho k porovnání se znakem { používat seznam s
       jediným znakem [{].

       GNU egrep se snaží tradiční způsob použití podporovat tak, že { nebere
       jako metaznak, pokud by měl být začátkem chybné specifikace rozsahu.
       Například příkaz egrep '{1' hledá dvouznakový řetězec {1 místo toho, aby
       hlásil chybu syntaxe v regulárním výrazu.  POSIX.2 dovoluje toto chování
       jako rozšíření, ale přenositelné skripty by na něj neměly spoléhat.

PROMĚNNÉ PROSTŘEDÍ
       Hování grepu je ovlivněno následujícími proměnnými prostředí:

       Locale LC_foo je určeno prozkoumáním proměnných prostředí LC_ALL, LC_foo,
       LANG, v uvedeném pořadí.  První z nich, která je nastavená, určí locale.
       Například pokud není nastavena LC_ALL, ale LC_MESSAGES je nastavena na
       pt_BR, je pro LC_MESSAGES locale použita brazilská portugalština.  C
       locale je použito pouze tehdy, když není nastavena žádná z těchto
       proměnných prostředí nebo pokud není nainstalován katalog locale nebo
       pokud byl grep zkompilován bez podpory národních jazyků (NLS).

       GREP_OPTIONS
              Tato proměnná nastavuje výchozí volby, které se přidají na začátek
              dalších dodatečných voleb. Například kdyby GREP_OPTIONS bylo
              '--binary-files=without-match --directories=skip', grep by se
              choval, jako kdyby volby --binary-files=without-match a
              --directories=skip byly uvedené před ostatními dodatečnými
              volbami.  Nastavení voleb jsou oddělená bílými znaky (např.
              mezerami nebo tabulátory).  Zpětné lomítko escapuje znaky, takže
              jej lze použít pro volbu obsahující bílé znaky nebo zpětná
              lomítka.

       GREP_COLOR
              Určuje značku pro zvýrazňování.

       LC_ALL, LC_COLLATE, LANG
              Tyto proměnné nastavují locale LC_COLLATE, které určuje řazení
              používané při interpretaci výrazů s rozsahy jako [a-z].

       LC_ALL, LC_CTYPE, LANG
              Tyto proměnné nastavují locale LC_CTYPE, které určuje typy znaků,
              např. které znaky jsou bílé znaky.

       LC_ALL, LC_MESSAGES, LANG
              Tyto proměnné nastavují locale LC_MESSAGES určující jazyk, kterým
              bude grep tisknout hlášení.  Výchozí C locale používá americkou
              angličtinu.

       POSIXLY_CORRECT
              Pokud je nastaveno, grep se chová podle požadavků POSIX.2; jinak
              se grep chová více jako ostatní programy GNU.  POSIX.2 vyžaduje,
              aby volby následující za jmény souborů byly brány už jen jako
              jména souborů; normálně se takové volby přesunou na začátek
              seznamu parametrů a berou se jako volby. POSIX.2 dále vyžaduje aby
              se neznámé volby pokládaly za “ilegální”, ale protože nejsou tak
              úplně protizákonné, normálně se prohlásí za “invalidní”.
              POSIXLY_CORRECT také ruší _N_GNU_nonoption_argv_flags_ popsané
              dále.

       _N_GNU_nonoption_argv_flags_
              (Zde N je číslo procesu grep).  Jestliže hodnota i-tého znaku této
              proměnné je 1, neber i-tý parametr grep jako volbu, i kdyby to
              vypadalo, že to volba je. Shell může dát tuto proměnnou do
              prostředí pro každý příkaz který spouští, aby určil, které
              parametry jsou výsledkem rozvinutí jmen souborů "žolíkovými" znaky
              (* a ?) a nemají být brány jako volby. Toho chování je možné jen s
              knihovnou GNU C a jen když není nastaveno POSIXLY_CORRECT.

NÁVRATOVÉ HODNOTY
       Normálně je výstupní hodnota 0, když jsou nalezeny shody nebo 1 když
       žádné nalezeny nejsou. Výstupní hodnota je 2, pokud došlo k chybě, ledaže
       byla použita volba -q nebo --quiet nebo --silent a byla nalezena
       odpovídající řádka.

CHYBY
       Hlášení o chybách posílejte na bug-grep@gnu.org (anglicky).

       Velké počty opakování v konstrukci {m,n} můžou vést k tomu, že grep
       použije dost paměti. Navíc některé jiné neobvyklé regulární výrazy mají
       exponenciální nároky na čas a prostor a mohou způsobit, že grep
       spotřebuje všechnu paměť.

       Zpětné odkazy jsou velmi pomalé a doba jejich zpracování může růst
       exponenciálně.




Projekt GNU                        2002/01/22                            GREP(1)