| Vývojář | Ken Thompson |
|---|---|
| Operační systém | Unix UN*X |
| Typ softwaru | standardní UNIXová utilita či příkaz |
| Některá data mohou pocházet zdatové položky. | |
grep jepočítačový program s rozhraním propříkazový řádek původně psaný pro operační systémUnix, nyní je dostupný i pro většinu systémů Unixového typu (napříkladLinux,FreeBSD,Mac OS a další). Načte textová data ze souborů nebo standardního vstupu a na základěregulárního výrazu vypíše na standardní výstup řádky, které danému regulárnímu výrazu vyhovují.[1][2]
Grep byl původně vytvořenKenem Thompsonem jako samostatná aplikace z parseruregulárních výrazů proed (který také vytvořil).[3]
Název pochází z příkazuedu:
g/re/pznamená „searchglobally for lines matching theregularexpressionre, andprint them“ – najdi řádek vyhovující regulárnímu výrazu a vypiš ho.[4][5] Poprvé se grep objevil v manuálu Unixu verze 4, 3. březen 1973.[6]
Najde všechny soubory v aktuálním adresáři obsahující řetězec „foo“:
grep foo *Najde všechny soubory v aktuálním adresáři (reprezentovaný tečkou „.“) a podadresářích obsahující řetězec „foo“:
grep -r foo .Totéž co předchozí, ale pouze vypíše názvy souborů obsahující řetězec:
grep -rl foo .Grep vyhledává v souborech předaných jako parametr, pokud parametr chybí hledá vestandardním vstupu. Ve výchozím nastavení vypisuje vyhovující řádky nastandardní výstup, ale program může přijímáním parametrů měnit funkčnost.
Jednoduchý příklad běžného použití grepu, hledá v souborufruitlist.txt řádky obsahující textový řetězecapple:
$ grep apple fruitlist.txt
Vyhovující řetězec se objeví pokud je rozpoznána sekvence znaků, například řádky obsahujícípineapple neboapples jsou také vytištěny i přes to že se řetězecapple vyskytuje uvnitř slova. Grep je ve výchozím nastavení náchylný na velikost písmen, tudíž řádky obsahujícíApple (s velkým písmenem) nebudou vytištěny pokud zároveň neobsahujíapple. Pro nenáchylnost na velikost písmen je potřeba přidat parametr-i (ignore case).
Příkaz může přebírat vícero souborů v seznamu argumentů. Například, všechny soubory mající koncovku .txt v daném adresáři mohou být prohledány pomocí hvězdičky jako součástjména souboru pokudterminál obsahuje podporužolíkových znaků:
$ grep apple *.txt
Pro hledání (mnohem) složitějších frází mohou být použityregulární výrazy. Následující příkaz vytiskne všechny řádky ze souborů které začínají písmenema, následovaným jakýmkoliv písmenem a pokračujícímple.
$ grep ^a.ple fruitlist.txt
Jako většina Unixových příkazů, i grep přijímá argumenty příkazové řádky pro změnu nastavení a chování. Například argument-l (malé písmeno L) poskytuje seznam souborů obsahující poskytnutý řetězec místo toho, aby vytiskl inkriminované řádky.
Vytisknutí řádků obsahující pouze slovoapple ohraničené bílými znaky nebo uvozovkami, může být dosaženo předáním volby-w.
Pokud chceme pouze řádky které celé přesně vyhovují podmínce, používá se volba-x. Řádky obsahující jen a pouze slovoapple jsou nalezeny právě volbou-x.
$ cat fruitlist.txt #vypsání souboruappleapplespineappleapple-apple-fruitfruit-apple $ grep -x apple fruitlist.txt #nalezeníapple
Volba -v zneguje výsledek vyhledávání a vytiskne řádky neobsahující slovoapple.
$ grep -v apple fruitlist.txtbananapearpeachorang
K dispozici je mnoho variant grepu napříčoperačními systémy nástroji pro vývoj software. Rané varianty jakoegrep a fgrep byly představeny v Unixu verze 7. Příkazegrep používá rozšířenou syntaxi regulárních výrazů která byla do Unixu přidána po verziKena Thompsona. Příkazfgrep vyhledává kterýkoliv obyčejný řetězec v daném seznamu za použitíalgoritmus Aho-Corasick. Tyto varianty přežívají v moderní implementaci grepu jako jeho parametry (a standardizovány jako -E a -F v norměPOSIX[7])) a jakoaliasy tohoto příkazu. Tyto aliasy se používají aby simulovaly zaniklé implementace grepu.
Další příkazy obsahují slovo „grep“ jako indikaci, že program něco vyhledává. Příkladem budiž utilitapgrep, vyhledávající v běžících procesech, které odpovídají regulárnímu výrazu.
Ve skriptovacím jazykuPerl se používá „grep“ jako název integrované funkce pro hledání prvků v seznamu. Tato funkce se vefunkcionálním programování obvykle označuje jakofiltr.
Příkazpcegrep je implementace grepu používající syntaxi regulárních výrazů z Perlu. Tato funkcionalita může být v grepu vyvolána parametrem-P.[8]
Grep byl také portován na platformuMicrosoft Windows (například pomociCygwin a GnuWin32). Některé verze Windows nabízí podobnou funkcionalitu s příkazyqgrep neboFindstr.[9]
V tomto článku byl použitpřeklad textu z článkugrep na anglické Wikipedii.
{{Cite book}} označená jako k „pouze dočasnému použití“.{{Cite book}} označená jako k „pouze dočasnému použití“.| Příkazy a programypříkazové řádkyUnixu (více) | |
|---|---|
| Správa souborů | |
| Správa procesů | |
| Správa uživatelů a prostředí | |
| Zpracování textu | |
| Programování vshellu | |
| Síťová komunikace | |
| Hledání | |
| Ostatní | |