Provided by:
manpages-cs_0.17.20080113-1_all 
JMÉNO
grep, egrep, fgrep - tiskne řádky, které odpovídají zadanému vzoru
PŘEHLED
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 POET, --after-context=POET
Tiskni POET řá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 POET, --before-context=POET
Tiskni POET řádků které předcházejí platnému řádku. Mezi
souvislé platné výsledky vkládá řádky obsahující --.
-C POET, --context=POET
Tiskni POET řá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 VRAZ za rozšířený regulární výraz (viz níže).
-e VRAZ, --regexp=VRAZ
Jako vzor použij VRAZ; užitečné pro zachování vzorů
začínajících -.
-F, --fixed-strings
Považuj VRAZ 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 VRAZ 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 VRAZ 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 VRAZU 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 POET, --max-count=POET
Přestaň číst soubor po dosažení POTU odpovídajících řádků. Je-
li vstupem standardní vstup z obyčejného souboru, a je vytištěno
POET 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í POTU 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 POET.
Pokud je zároveň použita volba -v nebo --invert-match program,
grep skončí po vypsání POTU 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ě.