Název

grep, egrep, fgrep – vypisuje řádky odpovídající vzoru

Synopse

grep PATTERN
grep

Popis

grep prohledává pojmenované vstupní soubory (nebo standardní vstup, pokud nejsou pojmenovány žádné soubory, nebo pokud je jako jméno souboru zadána jedna pomlčka-minus (-))a hledá řádky obsahující shodu se zadaným PATTERN. Ve výchozím nastavení grep vypíše odpovídající řádky.

Dále jsou k dispozici dvě varianty programů egrep a fgrep. egrep je stejný jako grep -E. fgrep je stejný jakogrep -F. Přímé volání jako egrep nebo fgrep je zastaralé, ale je poskytováno proto, aby historické aplikace, které na ně spoléhají, mohly běžet beze změn.

Options

Generic Program Information

–help

Vypíše zprávu o použití stručně shrnující tyto volby příkazového řádku a adresu pro hlášení chyb, pak ukončí program.

-V, –version Vypíše číslo verze programu grep do standardního výstupního proudu. Toto číslo verze by mělo být uvedeno ve všech hlášeních chyb (viz níže).

Výběr grepu

-E, –extended-regexp Interpretuje PATTERN jako rozšířený regulární výraz (ERE, viz níže). (-E je specifikováno POSIXem .) -F, –fixed-strings Interpretujte PATTERN jako seznam pevných řetězců oddělených novými řádky, z nichž má být porovnán kterýkoli. (-F je specifikováno POSIXem.) -G, –basic-regexp Interpretovat PATTERN jako základní regulární výraz (BRE, viz níže). Toto je výchozí nastavení. -P, –perl-regexp Interpretuje PATTERN jako regulární výraz jazyka Perl. Toto je velmi experimentální a grep -P může upozornit na neimplementované funkce.

Řízení porovnávání

-e PATTERN, –regexp=PATTERN Použijte PATTERN jako vzor. To lze použít k zadání více vyhledávacích vzorů nebo k ochraně vzoru začínajícího pomlčkou (-) (-e je specifikováno POSIXem .) -f FILE, –file=FILE Získejte vzory z FILE, jeden na řádek. Prázdný soubor obsahuje nulový počet vzorů, a proto neodpovídá ničemu. (-f je specifikováno systémemPOSIX .) -i, –ignore-case Ignorujte rozdíly mezi velkými a malými písmeny v souboru PATTERN i ve vstupních souborech. (-i určuje POSIX .) -v, –invert-match Invertuje smysl porovnávání, aby se vybraly řádky, které neodpovídají. (-v určuje POSIX .) -w, –word-regexp Vybírejte pouze řádky obsahující shody, které tvoří celá slova. Testem je, že odpovídající podřetězec musí být buď na začátku řádku, nebo mu musí předcházet neslovní znak. Podobně musí být buď na konci řádku, nebo za ním musí následovat neslovní znak. slovní znaky jsou písmena, číslice a podtržítko. -x, –line-regexp Vybere pouze ty shody, které přesně odpovídají celému řádku. (-x je specifikováno POSIXem .) -y

Zastaralé synonymum pro -i.

Obecné řízení výstupu

-c, –count Potlačí normální výstup; místo toho vypíše počet odpovídajících řádků pro každý vstupní soubor. S volbou -v, –invert-match (viz níže) spočítá neshodující se řádky. (-c je specifikováno POSIXem .) –color, –colour Shodné (neprázdné) řetězce, odpovídající řádky, kontextové řádky, názvy souborů, čísla řádků, posuny bajtů a oddělovače (pro pole a skupiny kontextových řádků) obklopte escape sekvencemi a zobrazte je barevně na terminálu. Barvy jsou definovány proměnnou prostředí GREP_COLORS. Zastaralá proměnná prostředí GREP_COLOR je stále podporována, ale její nastavení nemá prioritu. KDYŽ je nikdy, vždy neboautomaticky. -L, –files-without-match Potlačí normální výstup; místo toho vypíše název každého vstupního souboru, z něhož by za normálních okolností nebyl vypsán žádný výstup. Skenování se zastaví při první shodě. -l, –files-with-matches Potlačí normální výstup; místo toho vypíše název každého vstupního souboru, ze kterého by byl normálně vypsán výstup. Skenování se zastaví při první shodě. (-l je specifikováno POSIXem .) -m NUM, –max-count=NUM Zastaví čtení souboru po NUM odpovídajících řádcích. Pokud je vstupem standardní vstup z regulárního souboru a výstupem je NUM odpovídajících řádků,grep zajistí, aby byl standardní vstup před ukončením umístěn těsně za poslední odpovídající řádek, bez ohledu na přítomnost koncového kontextového řádku. To umožňuje volajícímu procesu pokračovat ve vyhledávání. Když grep skončí po NUM odpovídajících řádků, vypíše všechny koncové kontextové řádky. Pokud je použita také volba -c nebo –count, grep nevypíše počet větší než NUM. Pokud je použita také volba -v nebo –invert-match, grep se zastaví po vypsání NUM neshodných řádků. -o, –only-matching Vypíše pouze odpovídající (neprázdné) části odpovídajícího řádku, přičemž každá taková část je na samostatném výstupním řádku. -q, –quiet, –silent Tichý; nevypisuje nic na standardní výstup. Okamžité ukončení s nulovým stavem, pokud je nalezena jakákoli shoda, a to i v případě, že byla zjištěna chyba. Viz také volbu-s nebo –no-messages. (-q je specifikováno POSIXem .) -s, –no-messages Potlačení chybových hlášení o neexistujících nebo nečitelných souborech. Poznámka k přenositelnosti: na rozdíl od GNU grepu neodpovídal grep 7. vydání Unixu standardu POSIX , protože neobsahoval volbu -q a jeho volba -s se chovala jako volba -q GNU grepu.USG -style grep také neobsahoval -q, ale jeho volba -s se chovala jako GNU grep. Přenosné shellové skripty by se měly vyhnout oběma parametrům -q a -s a místo toho by měly přesměrovat standardní a chybový výstup na /dev/null. (-s je specifikováno POSIXem.)

Output Line Prefix Control

-b, –byte-offset Před každým řádkem výstupu vypište offset bajtu 0 ve vstupním souboru. Pokud je zadáno -o (–only-matching), vypíše offset samotné části, která je předmětem porovnávání. -H, –with-filename Vypíše název souboru pro každou shodu. Toto je výchozí nastavení, pokud je k prohledání více než jeden soubor. -h, –no-filename Potlačí prefixaci názvů souborů na výstupu. Toto je výchozí nastavení, pokud je prohledáván pouze jeden soubor (nebo pouze standardní vstup). –label=LABEL Zobrazí vstup skutečně pocházející ze standardního vstupu jako vstup pocházející ze souboru LABEL. To je užitečné zejména při implementaci nástrojů jakozgrep, např. gzip -cd foo.gz | grep –label=foo -H něco. Viz také volbu -H. -n, –line-number Každý řádek výstupu předznamenává číslo řádku v jeho vstupním souboru založené na čísle 1. (-n je specifikováno POSIXem .) -T, –initial-tab Zajistí, aby první znak aktuálního obsahu řádku ležel na zarážce tabulátoru, takže zarovnání tabulátorů bude vypadat normálně. To je užitečné u voleb, kterépředřazují svůj výstup skutečnému obsahu: -H,-n a -b. Aby se zvýšila pravděpodobnost, že všechny řádky z jednoho souboru budou začínat ve stejném sloupci, způsobí to také, že se číslo řádku a posunutí bajtů (pokud je přítomno) vypíše v minimální šířce pole. -u, –unix-byte-offsets Hlášení bajtových offsetů v unixovém stylu. Tento přepínač způsobí, že grep ohlásí bajtové offsety, jako by soubor byl textovým souborem v unixovém stylu, tj. s odstraněnými znaky CR. Výsledek bude stejný jako při spuštění grepu na unixovém počítači. Tato volba nemá žádný účinek, pokud není použita také volba -b; na jiných platformách než MS-DOS a MS -Windows nemá žádný účinek. -Z, –null Místo znaku, který obvykle následuje za jménem souboru, vypíše nulový bajt (znak ASCII NUL). Například grep -lZvypíše nulový bajt za každý název souboru místo obvyklého nového řádku. Díky této volbě je výstup jednoznačný, a to i v případě, že názvy souborů obsahují neobvyklé znaky, jako jsou nové řádky. Tuto volbu lze použít s příkazy jako find -print0, perl -0, sort -z a xargs -0 ke zpracování libovolných názvů souborů, a to i těch, které obsahují znaky nového řádku.

Řízení kontextových řádků

-A NUM, –after-context=NUM Vypíše NUM řádků koncového kontextu za odpovídajícími řádky. Mezi sousední skupiny shod umístí řádek obsahující oddělovač skupin (–). S volbou -o nebo –only-matching to nemá žádný účinek a zobrazí se varování. -B NUM, –before-context=NUM Vypíše NUM řádků úvodního kontextu před odpovídající řádky. Vloží řádek obsahující oddělovač skupin (–) mezi sousedící skupiny shod. S volbou -o nebo –only-matching nemá tento parametr žádný účinek a zobrazí se varování. -C NUM, -NUM, –context=NUM Vytiskne NUM řádků výstupního kontextu. Mezi sousedící skupiny shod umístí řádek obsahující oddělovač skupin (–). S volbou -o nebo–only-matching to nemá žádný účinek a je vydáno varování.

Výběr souborů a adresářů

-a, –text Zpracuje binární soubor, jako by to byl text; to je ekvivalentní volbě –binary-files=text. –binary-files=TYPE Pokud prvních několik bajtů souboru naznačuje, že soubor obsahuje binární data, předpokládejte, že soubor je typu TYPE. Ve výchozím nastavení je TYPEbinární a grep normálně vypíše buď jednořádkovou zprávu, že binární soubor odpovídá, nebo žádnou zprávu, pokud žádná shoda neexistuje. Pokud je TYPE bez shody, grep předpokládá, že binární soubor neodpovídá; to je ekvivalentní volbě -I. Pokud je TYPE text, grep zpracuje binární soubor, jako by to byl text; to je ekvivalentní volbě -a. Varování: grep –binary-files=text můževypouštět binární smetí, což může mít nepříjemné vedlejší účinky, pokud je výstupem terminál a pokud ovladač terminálu interpretuje některé z nich jako příkazy. -D ACTION, –devices=ACTION Pokud je vstupní soubor zařízení, FIFO nebo zásuvka, použijte ke zpracování ACTION. Ve výchozím nastavení je ACTION nastaveno na čtení, což znamená, že zařízení jsou čtena, jako by to byly běžné soubory. Pokud je ACTION skip, jsou zařízení tiše přeskočena. -d ACTION, –directories=ACTION Pokud je vstupním souborem adresář, použijte pro jeho zpracování příkaz ACTION. Ve výchozím nastavení je ACTION read, což znamená, že adresáře jsou čteny stejně, jako by to byly běžné soubory. Pokud je ACTION skip, adresáře se tiše přeskočí. Pokud je ACTION recurse, grep přečte rekurzivně všechny soubory v každém adresáři; to je ekvivalentní volbě -r. –exclude=GLOB Přeskočí soubory, jejichž základní jméno se shoduje s GLOB (s použitím zástupných znaků). Glob s názvem souboru může používat *, ? a jako zástupné znaky a \ pro doslovné uvození zástupného znaku nebo znaku zpětného lomítka. –exclude-from=FILE Přeskočí soubory, jejichž základní název odpovídá některému z globů názvů souborů načtených z FILE (pomocí porovnávání zástupných znaků, jak je popsáno v položce –exclude). –exclude-dir=DIR Vyloučí adresáře odpovídající vzoru DIR z rekurzivního vyhledávání. -I

Zpracovává binární soubor, jako by neobsahoval odpovídající data; to je ekvivalentní volbě –binary-files=without-match.

–include=GLOB Vyhledává pouze soubory, jejichž základní jméno odpovídá GLOB (pomocí zástupných znaků, jak je popsáno v –exclude). -R, -r, –recursive Přečte rekurzivně všechny soubory v každém adresáři; to je ekvivalentní volbě -d recurse.

Další volby

–line-buffered Použije vyrovnávací paměť na výstupu. To může způsobit snížení výkonu. –mmap

Pokud je to možné, použijte ke čtení vstupu systémové volání mmap(2) místo výchozího systémového volání read(2). V některých situacích poskytuje –mmap lepší výkon. Nicméně –mmap může způsobit nedefinované chování (včetně výpisů jádra), pokud se vstupní soubor během práce grepu zmenší nebo pokud dojde k chybě I/O.

-U, –binary Soubor(y) považujte za binární. Ve výchozím nastavení pod MS-DOS a MS -Windows grep odhaduje typ souboru podle obsahu prvních 32KB načtených ze souboru. Pokud grep rozhodne, že soubor je textový, odstraní z původního obsahu souboru znaky CR (aby regulární výrazy s ^ a $ fungovaly správně). Zadáním parametru -U se tento odhad zruší a všechny soubory se načtou a předají mechanismu porovnávání doslovně; pokud je soubor textový s dvojicemi CR/LF na konci každého řádku, způsobí to selhání některých regulárních výrazů. Tato volba nemá vliv na jiné platformy než MS-DOS a MS -Windows. -z, –null-data Vstup zpracovává jako sadu řádků, z nichž každý je ukončen nulovým bajtem (znak ASCII NUL) namísto nového řádku. Stejně jako volbu -Z nebo –null lze tuto volbu použít s příkazy jako sort -z ke zpracování libovolných názvů souborů.

Regulární výrazy

Regulární výraz je vzor, který popisuje množinu řetězců. Regulární výrazy jsou konstruovány obdobně jako aritmetické výrazy, pomocírůzných operátorů pro kombinaci menších výrazů.

grep rozumí třem různým verzím syntaxe regulárních výrazů: „základní“, „rozšířenou“ a „perlovou“. V GNU grepu není mezi základní a rozšířenou syntaxí žádný rozdíl v dostupné funkčnosti. V jiných implementacích jsou základní regulární výrazy méně výkonné. Následující popis platí pro rozšířené regulární výrazy; rozdíly pro základní regulární výrazy jsou shrnuty později. Perlovské regulární výrazyposkytují další funkčnost a jsou dokumentovány v pcresyntax(3) a pcrepattern(3), ale nemusí být dostupné v každém systému.

Základními stavebními kameny jsou regulární výrazy, které odpovídají jednomu znaku. Většina znaků, včetně všech písmen a číslic, jsou regulárnívýrazy, které odpovídají samy sobě. Jakýkoli metaznak se zvláštním významem může být uvozen tak, že se před něj vloží zpětné lomítko.

Tečka . odpovídá libovolnému jednotlivému znaku.

Třídy znaků a závorkové výrazy

Závorkový výraz je seznam znaků uzavřený znakem . Odpovídá libovolnému jednotlivému znaku v tomto seznamu; pokud je prvním znakem seznamu caret ^, pak odpovídá libovolnému znaku, který v seznamu není. Regulární výraz se například shoduje s jakoukoli jednotlivou číslicí.

V rámci závorkového výrazu se výraz rozsahu skládá ze dvou znaků oddělených pomlčkou. Shoduje se s libovolným jednotlivým znakem, který se řadí mezi tyto dva znaky včetně, přičemž se použije kolizní posloupnost a znaková sada daného locale. Například ve výchozím lokálním jazyce C je ekvivalentní výrazu. Mnoho lokálních jazyků řadí znaky ve slovníkovém pořadí a v těchto jazycích obvykle není ekvivalentní s ; může být například ekvivalentní s , . Chcete-li získat tradiční interpretaci výrazů se závorkami, můžete použít lokální jazyk C nastavením proměnné prostředíLC_ALL na hodnotu C.

Nakonec jsou v rámci výrazů se závorkami předdefinovány určité pojmenované třídy znaků, a to následovně. Jejich názvy se vysvětlují samy a jsou to: , , , , , , , , , , a . Například ] znamená , s tím rozdílem, že druhý tvar závisí na locale a kódování znaků ASCII, zatímco první tvar je na locale a znakové sadě nezávislý. (Všimněte si, že závorky v těchto názvech tříd jsou součástí symbolických názvů a musí být uvedeny navíc k závorkám ohraničujícím závorkový výraz). Většina metaznaků ztrácí uvnitř závorkových výrazů svůj zvláštní význam. Chcete-li zahrnout literál ], umístěte jej do seznamu jako první. Podobně chcete-li zahrnout literál ^, umístěte jej kamkoli jinam než na první místo. A konečně, chcete-li zahrnout literál -, umístěte jej na poslední místo.

Zakotvení

Znak caret ^ a znak dolaru $ jsou metaznaky, které odpovídají prázdnému řetězci na začátku a na konci řádku.

Znak zpětného lomítka a speciální výrazy

Symboly \< a \> odpovídají prázdnému řetězci na začátku a na konci slova. Symbol \b odpovídá prázdnému řetězci na okraji slova a \B odpovídá prázdnému řetězci, pokud není na okraji slova. Symbol \w je synonymem pro] a \W je synonymem pro ].

Repetition

Za regulárním výrazem může následovat jeden z několika operátorů opakování: ?

Předchozí položka je nepovinná a bude přiřazena nejvýše jednou.

*

Předchozí položka bude přiřazena nula nebo vícekrát.

+

Předchozí položka bude přiřazena jednou nebo vícekrát.

{n}

Předchozí položka bude přiřazena přesně n-krát.

{n,}

Předchozí položka bude přiřazena n nebo vícekrát.

{,m}

Předchozímu prvku odpovídá nejvýše mkrát.

{n,m}

Předchozímu prvku odpovídá nejméně nkrát, ale nejvýše mkrát.

Konkatenace

Dva regulární výrazy lze spojit; výsledný regulární výraz odpovídá libovolnému řetězci vytvořenému spojením dvou podřetězců, které odpovídají spojeným výrazům.

Alternation

Dva regulární výrazy lze spojit pomocí infixového operátoru |; výsledný regulární výraz odpovídá libovolnému řetězci, který odpovídá kterémukoli z alternativních výrazů.

Přednost

Opakování má přednost před spojením, které má zase přednost před alternací. Celý výraz může být uzavřen do závorek, aby se tato pravidla přednosti zrušila a vytvořil se podvýraz.

Zpětné odkazy a podvýrazy

Zpětný odkaz \n, kde n je jedna číslice, odpovídá podřetězci, kterému dříve odpovídal n-tý regulární výraz v závorce.

Základní vs. rozšířené regulární výrazy

V základních regulárních výrazech ztrácejí metaznaky ?, +, {, |, ( a ) svůj zvláštní význam; místo nich se používají zpětné lomené verze \?, \+, \{, \|, \( a \).

Tradiční egrep nepodporoval metaznak { a některé implementace egrepu místo něj podporují \{, takže přenositelné skripty by se měly vyhýbat { ve vzorech grep -E a měly by používat k porovnání doslovný {.

GNU grep -E se snaží podporovat tradiční použití tím, že předpokládá, že { není speciální, pokud by bylo začátkem neplatné specifikace intervalu. Například příkaz grep -E ‚{1‘ vyhledá dvouznakový řetězec {1 místo toho, aby ohlásil syntaktickou chybu v tomtovýrazu. POSIX.2 toto chování umožňuje jako rozšíření, ale přenositelné skripty by se mu měly vyhnout.

Proměnné prostředí

Chování příkazu grep je ovlivněno následujícími proměnnými prostředí.

Místo pro kategorii LC_foo je určeno zkoumáním tří proměnných prostředí LC_ALL, LC_foo, LANG v tomto pořadí. První z těchto proměnných, která je nastavena, určuje locale. Například pokud není nastavena LC_ALL, ale LC_MESSAGES je nastaveno topt_BR, pak se pro kategorii LC_MESSAGES použije locale brazilské portugalštiny. Pokud není nastavena žádná z těchto proměnných prostředí, pokud není nainstalován katalog locale nebo pokud grep nebyl zkompilován s podporou národních jazyků ( NLS ), použije se locale C.

GREP_OPTIONS Tato proměnná určuje výchozí volby, které se umístí před všechny explicitní volby. Pokud je například GREP_OPTIONS‘–binary-files=without-match –directories=skip‘, grep se chová, jako kdyby byly před explicitními volbami zadány dvě volby –binary-files=without-match a–directories=skip. Specifikace možností se oddělují bílými znaky. Zpětné lomítko escapuje další znak, takže jej lze použít k zadání volby obsahující bílé znaky nebo zpětné lomítko. GREP_COLOR Tato proměnná určuje barvu použitou pro zvýraznění přiřazeného (neprázdného) textu. Je zastaralá ve prospěch GREP_COLORS, ale stále je podporována. Funkce Themt, ms a mc funkce GREP_COLORS mají před ní přednost. Může zadat pouze barvu použitou ke zvýraznění odpovídajícího neprázdného textu v libovolném odpovídajícím řádku (vybraném řádku, pokud je vynechána volba příkazového řádku -v, nebo kontextovém řádku, pokud je zadána volba -v). Výchozí hodnota je 01;31, což znamená tučné červené popředí textu na výchozím pozadí terminálu. GREP_COLORS Určuje barvy a další atributy použité ke zvýraznění různých částí výstupu. Jeho hodnota je dvojtečkou oddělený seznam vlastností, který je ve výchozím nastavení ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36 s vynechanými logickými vlastnostmi rv a ne (tj. false). Podporované schopnostijsou následující. sl=

SGR podřetězec pro celé vybrané řádky (tj. odpovídající řádky, pokud je vynechána volba příkazového řádku -v, nebo neodpovídající řádky, pokud je zadána volba -v). Pokud je však zadána logická vlastnost rv a volba příkazového řádku -v, použije se místo toho pro kontextově odpovídající řádky. výchozí hodnota je prázdná (tj. výchozí dvojice barev terminálu).

cx=

SGR podřetězec pro celé kontextové řádky (tj. neodpovídající řádky, když je vynechána volba příkazového řádku -v, nebo odpovídající řádky, když je zadána -v). Pokud je však zadána logická vlastnost rv i volba příkazového řádku -v, použije se místo toho pro vybrané neodpovídající řádky. Výchozí hodnota je prázdná (tj. výchozí dvojice barev terminálu).

rv

Boolean hodnota, která obrací (prohodí) významy schopností sl= a cx=, je-li zadána volba příkazového řádku -v. Výchozí hodnota je false (tj. schopnost je vynechána).

mt=01;31

SGR podřetězec pro porovnávání neprázdného textu v libovolném odpovídajícím řádku (tj. vybraném řádku při vynechání volby příkazového řádku -v nebo kontextovém řádku při zadání -v). Nastavení této hodnoty je ekvivalentní nastavení ms= i mc= najednou na stejnou hodnotu. Výchozí hodnotou je tučné červené textové pozadí nad pozadím aktuálního řádku.

ms=01;31

SGR podřetězec pro porovnání neprázdného textu ve vybraném řádku. (Používá se pouze tehdy, když je vynechána volba příkazového řádku -v.) Účinek příznakusl= (nebo cx= v případě rv) zůstává aktivní, když se tato volba spustí. Výchozí je tučné červené popředí textu nad aktuálním pozadím řádku.

mc=01;31

SGR podřetězec pro porovnávání neprázdného textu v kontextovém řádku. (Používá se pouze v případě, že je zadána volba příkazového řádku -v.) Účinek vlastnosticx= (nebo sl= v případě rv) zůstává aktivní, když se tato volba spustí. Výchozím nastavením je tučné červené popředí textu nad aktuálním pozadím řádku.

fn=35

SGR podřetězec pro názvy souborů předřazený libovolnému řádku obsahu. Výchozí je purpurové textové popředí nad výchozím pozadím terminálu.

ln=32

SGR podřetězec pro čísla řádků předcházející libovolnému řádku obsahu. Výchozí je zelené textové popředí nad výchozím pozadím terminálu.

bn=32

SGR podřetězec pro bajtové offsety předřazující libovolný řádek obsahu. Výchozí je zelené textové popředí nad výchozím pozadím terminálu.

se=36

SGR podřetězec pro oddělovače, které se vkládají mezi vybraná pole řádků (:), mezi pole kontextových řádků, (-) a mezi skupiny sousedních řádků, pokud je zadán nenulový kontext (–). Výchozí je azurové textové popředí nad výchozím pozadím terminálu.

ne

Boolean hodnota, která zabraňuje vymazání na konec řádku pomocí funkce Vymazat v řádku (EL) doprava (\33. LC_ALL, LC_CTYPE, LANG Tyto proměnné určují locale pro kategorii LC_CTYPE, která určuje typ znaků, např. které znaky jsou bílé. LC_ALL, LC_MESSAGES, LANG Tyto proměnné určují locale pro kategorii LC_MESSAGES, která určuje jazyk, který grep používá pro zprávy. Ve výchozím nastavení používá Clocale pro zprávy americkou angličtinu. POSIXLY_CORRECT Pokud je nastavena, chová se grep tak, jak vyžaduje POSIX.2; v opačném případě se grep chová spíše jako ostatní programy GNU. POSIX.2 vyžaduje, aby se s volbami, které následují za názvy souborů, zacházelo jako s názvy souborů; ve výchozím nastavení jsou takové volby permutovány na začátek seznamuoperand a zachází se s nimi jako s volbami. POSIX.2 také vyžaduje, aby byly nerozpoznané volby diagnostikovány jako „nelegální“, ale protože nejsou ve skutečnosti v rozporu se zákonem, je výchozí diagnóza „neplatné“. POSIXLY_CORRECT také vypíná _N_GNU_nonoption_argv_flags_,popsané níže. _N_GNU_nonoption_argv_flags_ (Zde N je číselné ID procesu grepu.) Je-li i-tý znak hodnoty této proměnné prostředí 1, nepovažujte i-tý operand grepu za volbu, i když se tak tváří. Shell může tuto proměnnou vložit do prostředí pro každý spuštěný příkaz a určit, které operandy jsou výsledkem expanze zástupných znaků názvů souborů, a proto by neměly být považovány za volby. Toto chování je dostupné pouze s knihovnou GNU C, a to pouze v případě, že není nastaveno POSIXLY_CORRECT.

Stav ukončení

Obvykle je stav ukončení 0, pokud jsou nalezeny vybrané řádky, a 1 v opačném případě. Stav ukončení je však 2, pokud došlo k chybě, pokud není použita volba -q nebo–quiet nebo –silent a není nalezen vybraný řádek. Všimněte si však, že POSIX pouze nařizuje, aby pro programy jako asgrep, cmp a diff byl výstupní stav v případě chyby větší než 1; z důvodu přenositelnosti je proto vhodné použít logiku, která testuje tuto obecnou podmínku místo striktní rovnosti s 2.

Copyright

Copyright 1998-2000, 2002, 2005-2010 Free Software Foundation, Inc.

Jedná se o svobodný software; podmínky kopírování viz zdrojový kód. Neexistuje žádná záruka; ani na PRODEJNOST nebo VHODNOST PRO URČITÝ ÚČEL.

Chyby

Hlášení chyb

Hlášení chyb zasílejte na <[email protected]>, poštovní seznam, jehož webová stránka je <http://lists.gnu.org/mailman/listinfo/bug-grep>.grep’s Savannah bug tracker se nachází na adrese <http://savannah.gnu.org/bugs/?group=grep>.

Známé chyby

Velké počty opakování v konstrukci {n,m} mohou způsobit, že grep spotřebuje velké množství paměti. Kromě toho některé regulární výrazy s jinými znaky vyžadují exponenciální čas a místo a mohou způsobit, že grepu dojde paměť.

Zpětné odkazy jsou velmi pomalé a mohou vyžadovat exponenciální čas.

Viz také

Regulární manuálové stránky

awk(1), cmp(1), diff(1), find(1), gzip(1), perl(1), sed(1), sort(1), xargs(1), zgrep(1), mmap(2), read(2), pcre(3), pcresyntax(3), pcrepattern(3),terminfo(5), glob(7), regex(7).

POSIX Programmer’s Manual Page

grep(1p).

Dokumentace TeXinfo

Úplná dokumentace pro grep je vedena jako příručka TeXinfo. Pokud jsou programy info a grep na vašem pracovišti správně nainstalovány,měl by vám příkaz info grep umožnit přístup k úplné příručce.

Poznámky

GNU ‚není Unix, ale Unix je zvíře; jeho množné číslo je Unixen.

admin

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

lg