grep

GREP(1)								       GREP(1)



NAME
       grep, egrep, fgrep - tiskne radky, ktere odpovidaji zadanemu vzoru

PREHLED
       grep [volby] VZOR [SOUBOR...]
       grep [volby] [-e VZOR | -f SOUBOR] [SOUBOR...]

POPIS
       Grep  prohledava zadany vstup SOUBOR (nebo standardni vstup, pokud nej-
       sou zadany zadne soubory nebo soubor -) a hleda radky obsahujici zadany
       VZOR.	Ve   vychozim  nastaveni  grep	vypisuje  radky,  ktere	 vzoru
       odpovidaji.

       Dostupne jsou navic dve varianty programu -  egrep  a  fgrep.   Chovani
       programu egrep je stejne jako grep -E, chovani programu fgrep je stejne
       jako grep -F.

VOLBY
       -A POCET, --after-context=POCET
	      Tiskni POCET radku ktere nasleduji  po  platnem  (odpovidajicim)
	      radku.

       -a, --text
	      Pracuj  s	 binarnim souborem jako by to byl text; ekvivalentni k
	      volbe --binary-files=text

       -B POCET, --before-context=POCET
	      Tiskni POCET radku ktere predchazeji platnemu radku.

       -C [POCET], -POCET, --context[=POCET]
	      Tiskni POCET radku (vychozi pocet	 je  2)	 ke  kazdemu  platneho
	      radku.

       -b, --byte-offset
	      Tiskni  offset  bajtu  ve	 vstupnim  souboru  pred kazdym radkem
	      vystupu.

       --binary-files=TYP
	      Jestlize podle prvnich nekolika bajtu  obsahuje  soubor  binarni
	      data,  predpokladej, ze je typu TYP.  Vychozim nastavenim TYP je
	      binary a grep standardne vypise  bud  jednoradkovou  zpravu,  ze
	      binarni  soubor  odpovida,  nebo zadnou zpravu pokud neodpovida.
	      Jestlize je  TYP	without-match,	grep  predpoklada  ze  binarni
	      soubory neodpovidaji; je to stejne jako volba -I Jestlize je TYP
	      text, grep zpracovava binarni soubor jako by to byl text; stejne
	      jako  volba  -a.	Pozor: grep --binary-files=text muze zpusobit,
	      ze se budou vypisovat nesmyslne  binarni	znaky,	coz  muze  mit
	      neprijemne  vedlejsi ucinky pokud je vystupem terminal a nektere
	      znaky se v nem zacnou brat jako prikazy.

       -c, --count
	      Potlac normalni vystup; misto toho  napis	 pocet	odpovidajicich
	      radku  pro  kazdy	 vstupni  soubor.  S volbou -v, --invert-match
	      (viz nize), pocitej neodpovidajici radky.

       -d AKCE, --directories=AKCE
	      Pokud je vstupnim souborem adresar, pouzij  AKCI	k  jeho	 zpra-
	      covani.  Vychozim	 nastavenim  AKCE  je  read,  to  znamena,  ze
	      adresare se ctou jako by to byly bezne soubory.	Jestlize  AKCE
	      je  skip, adresare se mlcky preskoci.  Jestlize AKCE je recurse,
	      grep cte rekurzivne vsechny soubory v  kazdem  adresari;	je  to
	      stejne jako volba -r

       -E, --extended-regexp
	      Povazuj VYRAZ za rozsireny regularni vyraz (viz nize).

       -e VYRAZ, --regexp=VYRAZ
	      Jako   vzor   pouzij   VYRAZ;   uzitecne	 pro  zachovani	 vzoru
	      zacinajicich -.

       -F, --fixed-strings
	      VYRAZ je seznam pevnych retezcu oddelenych znaky konce radku, ze
	      kterych muze odpovidat kterykoliv.

       -f SOUBOR, --file=SOUBOR
	      Nacte  vzory  ze souboru SOUBOR, na kazdem radku jeden.  Prazdne
	      radky obsahuji nulove vzory a tedy neodpovidaji nicemu.

       -G, --basic-regexp
	      Povazuj VYRAZ za zakladni regularni vyraz (viz  nize).  Toto  je
	      vychozi nastaveni.

       -H, --with-filename
	      Tiskni jmeno souboru pro kazdou shodu.

       -h, --no-filename
	      Potlac  vkladani	jmen  souboru do vystupu pri prohledavani vice
	      souboru.

       --help Vytiskni strucnou napovedu.

       -I     Zpracuj binarni soubor jako by neobsahoval shody; to  je	stejne
	      jako volba --binary-files=without-match

       -i, --ignore-case
	      Nerozlisuj  velka a mala pismena ve VYRAZU ani ve vstupnich sou-
	      borech.

       -L, --files-without-match
	      Potlac normalni vystup; misto toho tiskni jmeno kazdeho souboru,
	      ze ktereho by se jinak zadny vystup netiskl. Prohledavani skonci
	      s prvni shodou.

       -l, --files-with-matches
	      Potlac normalni vystup; misto toho tiskni jmeno kazdeho souboru,
	      ze  ktereho by se jinak tiskl nejaky vystup. Prohledavani skonci
	      s prvni shodou.

       --mmap Pokud je to mozne, pouzij	 systemove  volani  mmap(2)  ke	 cteni
	      vstupnich	 dat,  misto  bezneho  volani  read(2)	--mmap zlepsit
	      vykon. Na druhou stranu --mmap muze zpusobit potize (vcetne core
	      dump)  jestlize  se  vstupni soubor za behu programu grep zmensi
	      nebo pokud nastane chyba vstupu/vystupu.

       -n, --line-number
	      Pred kazdy radek vystupu pridej jeho cislo v prislusnem vstupnim
	      souboru.

       -q, --quiet, --silent
	      Tise;  potlac  normalni  vystup.	Prohledavani  skonci  s	 prvni
	      shodou.  Viz take volbu -s or --no-messages uvedenou dale.

       -r, --recursive
	      Rekurzivne nacti vsechny soubory v kazdem adresari; to je stejne
	      jako volba -d recurse

       -s, --no-messages
	      Potlac  chybove  hlasky  o  neexistujicich nebo necitelnych sou-
	      borech.  Poznamka o prenositelnosti:  na	rozdil	od  GNU	 grep,
	      tradicni	grep  neodpovidal  specifikaci	POSIX.2, protoze nemel
	      volbu -q a jeho volba -s se chovala jako volba GNU -q GNU	 grep.
	      Shellove skripty ktere maji byt prenositelne na tradicni grep by
	      se mely voleb -q a -s vyvarovat a presmerovat misto toho	vystup
	      do /dev/null.

       -U, --binary
	      Pracuj se soubory jako s binarnimi. Normalne typ souboru pod MS-
	      DOS a MS-Windows urcuje  grep  tak,  ze  se  podiva  na  prvnich
	      prectenych  32KB	dat.  Kdyz grep rozhodne ze soubor je textovy,
	      vynecha z puvodniho obsahu znaky CR (aby neprestaly spravne fun-
	      govat  regularni vyrazy obsahujici ^ a $ ). Uvedenim volby -U se
	      toto pravidlo rusi a vsechny soubory  se	predaji	 porovnavacimu
	      mechanismu doslovne.  Pokud obsahuje soubor text s pary CR/LF na
	      koncich radku, zpusobi to, ze nektere regularni vyrazy prestanou
	      fungovat. Tato volba nema zadny ucinek na platformach jinych nez
	      MS-DOS a MS-Windows.

       -u, --unix-byte-offsets
	      Hlasit offsety jako v Unixu. Tento  prepinac  zajisti,  ze  grep
	      bude  tisknout offsety bajtu jako by soubor byl textovy soubor v
	      Unixu, tedy bez znaku CR.	 To znamena, ze	 vysledky  grep	 budou
	      stejne  jako  v  systemu	Unix.  Tato volba nema zadny efekt bez
	      soucasneho pouziti volby -b;  take  nema	efekt  na  platformach
	      jinych nez MS-DOS a MS-Windows.

       -V, --version
	      Vytiskni verzi grep na chybovy vystup. Verze by mela byt uvedena
	      ve vsech hlasenich chyb (viz nize).

       -v, --invert-match
	      Prevrat vyznam shody - vytisknou	se  radky  ktere  vzoru	 neod-
	      povidaji.

       -w, --word-regexp
	      Vyber  jen  radky	 ve  kterych se shoduje cele samostatne slovo.
	      Odpovidajici retezec musi byt bud na zacatku radku nebo mit pred
	      sebou  znak  ktery  se  nebere  jako soucast slova. Podobne musi
	      retezec byt bud na konci radku nebo za nim musi nasledovat  znak
	      ktery  se	 nebere jako soucast slova. Znaky ktere se povazuji za
	      casti slov jsou pismena, cislice a podtrzitko.

       -x, --line-regexp
	      Vyber jen shody pres cely radek.

       -y     Zastarala alternativa pro -i.

       -Z, --null
	      Vytiskni nulovy bajt (znak ASCII NUL) misto znaku	 ktery	nasle-
	      duje  po jmenech souboru. Napriklad grep -lZ pise nulovy bajt po
	      kazdem nazvu souboru misto obvykleho znaku  konce	 radku.	  Tato
	      volba  zajisti  jednoznacnost vystupu i v pripade, ze nazvy sou-
	      boru obsahuji neobvykle znaky jako znaky konce radku. Tuto volbu
	      lze  pouzit  pro	prikazy	 jako find -print0, perl -0, sort -z a
	      xargs -0, ke zpracovani libovolnych jmen	souboru	 vcetne	 tech,
	      ktere obsahuji znaky konce radku.

REGULARNI VYRAZY
       Regularni  vyraz	 je  vzor,  ktery  popisuje mnozinu retezcu. Regularni
       vyrazy  se  pisi	 (podobne  jako	 aritmeticke  vyrazy)  pomoci  ruznych
       operatoru, ktere davaji dohromady mensi vyrazy.

       Grep  zna  dve  ruzne  verze syntaxe pro regularni vyrazy: "zakladni" a
       "rozsirene." Pro GNU grep, neni v techto dvou verzich zadny  rozdil  co
       se  tyce	 funkcnosti.  V	 jinych implementacich jsou zakladni regularni
       vyrazy slabsi. Nasledujici popis plati pro rozsirene regularni  vyrazy;
       rozdily pro zakladni regularni vyrazy jsou uvedeny na konci.

       Zakladnim  stavebnim  kamenem  jsou  regularni vyrazy, ktere odpovidaji
       jedinemu znaku.	Vetsina znaku, vcetne vsech pismen a cislic, jsou samy
       o  sobe	regularni  vyrazy  ktere  se  shoduji samy se sebou. Kterykoli
       metaznak se zvlastnim vyznamem muze byt uveden ve svem puvodnim vyznamu
       tak, ze se pred nej napise zpetne lomitko.

       Seznam znaku v [ a ] odpovida jakemukoli jednotlivemu znaku ze seznamu;
       kdyz  je	 prvnim	 znakem	 seznamu  striska  ^  potom  seznam   odpovida
       jakemukoli  znaku  ktery	 v  seznamu  neni  Napriklad  regularni	 vyraz
       [0123456789] odpovida jedne libovolne cislici. Rozsah znaku lze	speci-
       fikovat	prvnim	a  poslednim  znakem,  oddelenymi  pomlckou. Jsou take
       prednastaveny nektere skupiny znaku: [:alnum:],	[:alpha:],  [:cntrl:],
       [:digit:],   [:graph:],	[:lower:],  [:print:],	[:punct:],  [:space:],
       [:upper:] a [:xdigit:] jsou postupne pismena a cislice,	pismena,  kon-
       trolni  znaky,  cislice,	 obrazkove  znaky,  mala  pismena, tisknutelne
       znaky,  interpunkcni  znamenka,	mezery,	 velka	 pismena   a   cislice
       sestnactkove  soustavy.	Napriklad [[:alnum:]] je stejne jako [0-9A-Za-
       z], az na to, ze druhy vzor zavisi na locale  POSIX  a  kodovani	 znaku
       ASCII,  zatimco	prvni je nezavisly na locale i znakove sade (zavorky v
       nazvech skupin jsou soucasti jejich symbolicky jmen a musi byt  uvedene
       uvnitr  zavorek uzavirajicich seznam).  Vetsina metaznaku ztraci v sez-
       namech svuj zvlastni vyznam. K pridani znaku ] do seznamu  staci	 uvest
       ho  jako	 prvni.	 Podobne znak ^ staci uvest na jinem nez prvnim miste.
       Konecne znak - se uvede jako posledni.

       Tecka .	odpovida jednomu libovolnemu znaku.  Znak \w je synonymem  pro
       [[:alnum:]] a \W je synonymem pro [^[:alnum]].

       Striska	^  a  znak dolaru $ jsou metaznaky, ktere odpovidaji prazdnemu
       retezci na zacatku, resp. na konci radku.  Symboly  \<  a  \>  oznacuji
       prazdne	retezce	 na zacatku, resp. na konci slova.  Symbol \b odpovida
       prazdnemu retezci na hranici slova  a  \B  odpovida  prazdnemu  retezci
       ktery neni na hranici slova.

       Regularni vyraz muze mit za sebou jeden z opakovacich operatoru:
       ?      Predchazejici  polozka  je  volitelna  a obsazena nejvyse jednou
	      (tj. jednou nebo ani jednou).
       *      Predchazejici polozka je volitelna a obsazena v libovolnem poctu
	      (tj. nula- nebo vicekrat).
       +      Predchazejici polozka je obsazena jednou nebo vicekrat.
       {n}    Predchazejici polozka je obsazena prave n krat.
       {n,}   Predchazejici polozka je obsazena n nebo vicekrat.
       {n,m}  Predchazejici  polozka  je  obsazena alespon n krat, ale ne vice
	      nez m krat.

       Dva regularni vyrazy se daji primo  spojit;  vysledny  regularni	 vyraz
       odpovida	 libovolnemu  retezci  vzniklemu  spojenim  dvou jinych, ktere
       odpovidaji puvodnim dvema regularnim vyrazum.

       Dva regularni vyrazy lze slozit pevnym operatorem |; vysledny regularni
       vyraz  odpovida	retezci,  ktery	 se  shoduje s kterymkoliv z uvedenych
       regularnich vyrazu.

       Opakovani ma prednost  pred  spojenim,  ktere  ma  zase	prednost  pred
       stridanim.  Cely podvyraz staci uzavrit do zavorek aby se tato prednost
       zrusila.

       Zpetny odkaz \n, kde n  je  cislice,  odpovida  podretezci,  ktery  byl
       predtim	 porovnavan  a	vyhodnocen  jako  shodny  s  n-tym  podvyrazem
       oddelenym zavorkami od zbytku regularniho vyrazu.

       V zakladnich regularnich vyrazech ztraceji metaznaky ?, +, {, |, (, a )
       sve  zvlastni  vyznamy;	misto  nich  se	 daji  pouzit verze se zpetnym
       lomitkem \?, \+, \{, \|, \(, a \).

       Tradicni egrep nepodporoval metaznak {  a  nektere  implementace	 egrep
       misto  toho  podporovaly	 \{.  Prenositelne skripty by tedy nemely { ve
       vzorech pro egrep pouzivat  a  misto  toho  k  porovnani	 se  znakem  {
       pouzivat seznam s jedinym znakem [{].

       GNU  egrep se snazi tradicni zpusob pouziti podporovat tak, ze { nebere
       jako metaznak pokud by mel byt  zacatkem	 chybne	 specifikace  rozsahu.
       Napriklad  prikaz  egrep	 '{1' hleda dvouznakovy retezec {1 misto toho,
       aby hlasil chybu syntaxe v regularnim vyrazu.   POSIX.2	dovoluje  toto
       chovani	jako  rozsireni,  ale  prenositelne  skripty  by na nej nemely
       spolehat.

PROMENNE PROSTREDI
       GREP_OPTIONS
	      Tato promenna nastavuje  volby,  ktere  se  pridaji  na  zacatek
	      dalsich  dodatecnych  voleb.   Napriklad kdyby GREP_OPTIONS bylo
	      '--binary-files=without-match --directories=skip', grep se chova
	      jako   kdyby  volby  --binary-files=without-match	 a  --directo-
	      ries=skip byly uvedene pred ostatnimi dodatecnymi volbami.  Nas-
	      taveni  voleb  jsou  oddelena  bilymi znaky (napr. mezerami nebo
	      tabulatory).  Zpetne lomitko uvadi dalsi	znak,  takze  jej  lze
	      pouzit pro volbu obsahujici bile znaky nebo zpetna lomitka.

       LC_ALL, LC_MESSAGES, LANG
	      Tyto  promenne  nastavuji	 locale	 LC_MESSAGES  urcujici	jazyk,
	      kterym bude grep tisknout hlaseni.  Locale  je  nastaveno	 prvni
	      existujici  promennou. Pokud neexistuje zadna, neni nainstalovan
	      prelozeny katalog hlasek nebo nebyl grep zkompilovan s jazykovou
	      podporou (NLS), pouzije se americka anglictina.

       LC_ALL, LC_CTYPE, LANG
	      Tyto promenne nastavuji locale LC_CTYPE urcujici typ znaku, tedy
	      ktere znaky patri k tzv. bilym. Locale je nastaveno prvni	 exis-
	      tujici  promennou.   Pokud  neexistuje  zadna, neni nainstalovan
	      katalog locale nebo nebyl grep zkompilovan s jazykovou  podporou
	      (NLS), pouzije se locale POSIX.

       POSIXLY_CORRECT
	      Pokud je nastaveno, grep se chova podle pozadavku POSIX.2; jinak
	      se chova grep vice jako ostatni programy GNU.  POSIX.2 vyzaduje,
	      aby  volby  nasledujici  za jmeny souboru byly brany uz jen jako
	      jmena souboru; normalne se takove volby presunou na zacatek sez-
	      namu  parametru a berou se jako volby. POSIX.2 dale vyzaduje aby
	      se nezname volby pokladaly za "illegal", ale protoze nejsou  tak
	      uplne   protizakonne,   normalne	 se   prohlasi	za  "invalid".
	      POSIXLY_CORRECT take rusi	 _N_GNU_nonoption_argv_flags_  popsane
	      dale.

       _N_GNU_nonoption_argv_flags_
	      (Zde  N  je  cislo procesu grep).	 Jestlize hodnota i-teho znaku
	      teto promenne je 1, neber i-ty parametr grep jako volbu, i kdyby
	      to  vypadalo,  ze	 to volba je. Shell muze dat tuto promennou do
	      prostredi pro kazdy  prikaz  ktery  spousti,  aby	 urcil,	 ktere
	      parametry	 jsou  vysledkem  rozvinuti  jmen souboru "zolikovymi"
	      znaky (* a ?) a nemaji byt brany jako volby.   Toho  chovani  je
	      mozne   jen  s  knihovnou	 GNU  C	 a  jen	 kdyz  neni  nastaveno
	      POSIXLY_CORRECT.

NAVRATOVE HODNOTY
       Normalne je vystupni hodnota 0 kdyz jsou nalezeny  shody	 nebo  1  kdyz
       zadne  nalezeny	nejsou	(volba	-v  prevraci  smysl vystupni hodnoty).
       Vystupni hodnota 2 znamena, ze jsou chyby syntaxe ve vzoru, nepristupne
       soubory, nebo jine systemove chyby.

VADY
       Hlaseni	 o   vadach  posilejte	na  bug-gnu-utils@gnu.org  (anglicky).
       Ujistete se, ze nekde v poli "Subject:" bude "grep".

       Velke pocty opakovani v konstrukci {m,n} muzou vest  k  tomu,  ze  grep
       pouzije	dost  pameti.  Navic  nektere  jine neobvykle regularni vyrazy
       muzou mit exponencialni naroky na cas a	prostor	 a  zpusobit  ze  grep
       spotrebuje vsechnu pamet.

       Zpetne  odkazy  jsou  velmi  pomale  a doba jejich zpracovani muze rust
       exponencialne.

PRELOZIL
       Tomas Andrle (tomas.andrle@pslib.cz).



GNU Project			  2000/02/26			       GREP(1)

Personal Tools