Grep - Grep
![]() Příklad grep příkaz | |
Původní autoři | Ken Thompson[1][2] |
---|---|
Vývojáři | AT&T Bell Laboratories |
První vydání | Listopad 1974[1] |
Plošina | Unix, Unixový, Plán 9, Peklo, OS-9, MSX-DOS, IBM i |
Typ | Příkaz |
grep
je příkazový řádek nástroj pro vyhledávání datových sad prostého textu pro řádky, které odpovídají a regulární výraz. Jeho název pochází z vyd příkaz g / re / p (Globálně hledat a regulární Expression a strřádky odpovídající rintu), který má stejný účinek.[3][4] grep
byl původně vyvinut pro Unix operační systém, ale později k dispozici pro všechny Unixový systémy a některé další, jako např OS-9.[5]
Dějiny
Než bylo pojmenováno, grep byl soukromý nástroj napsaný uživatelem Ken Thompson hledat soubory pro určité vzory. Doug McIlroy, nevědomý své existence, požádal Thompsona o napsání takového programu. V reakci na to, že o takovém nástroji přemýšlí přes noc, Thompson ve skutečnosti opravoval chyby a zhruba hodinu vylepšoval. Následujícího dne představil program McIlroyovi, který řekl, že je to přesně to, co chce. Thompsonův účet může vysvětlovat přesvědčení, že grep byl napsán přes noc.[6]
Thompson napsal první verzi v PDP-11 montážní jazyk pomoci Lee E. McMahon analyzovat text Federalistické noviny určit autorství jednotlivých příspěvků.[7] The ed textový editor (také autorem Thompson) měl regulární výraz podporu, ale nemohl být použit na tak velkém množství textu, takže Thompson tento kód vyňal do samostatného nástroje.[1] Jméno si vybral, protože v ed, příkaz g / re / p vytiskne všechny řádky odpovídající zadanému vzoru.[8][9] grep
byl poprvé zahrnut v Verze 4 Unix. Uvedení, že je „obecně citováno jako the prototypový softwarový nástroj “, připsán McIlroy grep
s „neodvolatelně zakořeněnými“ Thompsonovými filozofie nástrojů v Unixu.[10]
Ukázkové použití
Následující příklad ukazuje výstup souboru grep
příkaz s různými argumenty
$ grep root / etc / passwdroot: x: 0: 0: root: / root: / bin / bashoperátor: x: 11: 0: operátor: / root: / sbin / nologin$ grep -n root / etc / passwd1: root: x: 0: 0: root: / root: / bin / bash12: operator: x: 11: 0: operator: / root: / sbin / nologin$ grep -c Nepravdivé / etc / passwd7
Implementace
Různé grep
implementace jsou k dispozici v mnoha operačních systémech a prostředích pro vývoj softwaru.[11] Včetně raných variant egrep
a fgrep
, představený v Verze 7 Unix.[10] „egrep
"varianta podporuje rozšířený regulární výraz syntax přidal Alfred Aho po Ken Thompson původní implementace regulárního výrazu.[12] „fgrep
"varianta vyhledá libovolný ze seznamu pevný řetězce pomocí Algoritmus shody řetězců Aho – Corasick.[13] Binární soubory těchto variant přetrvávají ve většině moderních systémů (i když obvykle odkazují na grep
), avšak jejich explicitní použití bylo zastaralé a funkce těchto variant jsou zahrnuty v grep
jako přepínače příkazového řádku -E
a -F
; použití přepínačů je proto doporučeným způsobem použití.[14]
Ostatní příkazy obsahují slovo „grep“, které označuje, že hledají (obvykle shody regulárních výrazů). The pgrep
obslužný program například zobrazuje procesy, jejichž názvy odpovídají danému regulárnímu výrazu.[15]
V Perl programovací jazyk, grep je název integrované funkce, která vyhledá prvky v seznamu, které splňují určitou vlastnost.[16] Tento funkce vyššího řádu se obvykle jmenuje filtr v Funkcionální programování jazyky.
The pcregrep
příkaz je implementací grep
který používá Regulární výraz Perl syntax.[17] Podobné funkce lze vyvolat ve verzi GNU systému Windows grep
s -P
vlajka.[18]
Přístavy z grep
(v rámci Cygwin a GnuWin32 například) také běží pod Microsoft Windows. Některé verze systému Windows mají podobné vlastnosti qgrep
nebo findstr
příkaz.[19]
A grep
příkaz je také součástí ASCII je Nástroje MSX-DOS2 pro MSX-DOS verze 2.[20]
The grep, egrep, a fgrep příkazy byly také přeneseny do IBM i operační systém.[21]
Software Adobe InDesign má funkce GREP (od verze CS3 (2007)[22]), v najít / změnit dialogové okno[23] Karta „GREP“ a představená s aplikací InDesign CS4[24] v styly odstavců[25] "Styly GREP".
souhlas
Agrep (přibližný grep) odpovídá, i když pouze text přibližně odpovídá vyhledávacímu vzoru.[26]
Toto následující vyvolání najde síťové masky ve složce myfile, ale také jakékoli jiné slovo, které z něj lze odvodit, přičemž není dáno více než dvě substituce.
odsouhlasit -2 síťový soubor myfile
Tento příklad generuje seznam shod s nejbližšími, tj. S nejmenším počtem substitucí uvedených jako první. Příkazový příznak B prostředek nejlepší:
agreep -B netmasks myfile
Použití jako sloveso
V prosinci 2003 se Oxfordský anglický slovník Online přidány koncepční položky pro „grep“ jako podstatné jméno i sloveso.
Běžným použitím slovesa je fráze „Nemůžeš pozdravit mrtvé stromy“ - to znamená, že lze snadněji vyhledávat prostřednictvím digitálních médií pomocí nástrojů, jako jsou grep
, než by se dalo v tištěné podobě (tj. z mrtvých stromů, papíru).[27] Srovnat s Google.
Viz také
- Algoritmus vyhledávání řetězců Boyer – Moore
- souhlas, přibližný příkaz pro shodu řetězců
- najít (Windows), příkaz DOS a Windows, který provádí textové vyhledávání, podobně jako jednoduchý
grep
- najít (Unix), příkaz Unix, který vyhledává soubory podle atributů, velmi odlišných od
grep
- Seznam unixových příkazů
- vgrep nebo „vizuální
grep
"
Reference
- ^ A b C Kernighan, Brian (1984). Unixové programovací prostředí. Prentice Hall. str.102. ISBN 0-13-937681-X.
- ^ "Grep byl na nějakou dobu soukromým velením, než jsem to zveřejnil." -Ken Thompson Archivováno 2015-05-26 na Wayback Machine, Autor: Benjamin Rualthanzauva, publikováno 5. února 2014, střední
- ^ Hauben a kol. 1997, Ch. 9
- ^ Raymond, Eric. "grep". Soubor žargonu. Archivovány od originál dne 2006-06-17. Citováno 2006-06-29.
- ^ Paul S. Dayan (1992). OS-9 Guru - 1: Fakta. Galactic Industrial Limited. ISBN 0-9519228-0-7.
- ^ VCF East 2019 - Brian Kernighan rozhovory s Kenem Thompsonem (video). Youtube. 6. května 2019. (35 minut)
- ^ Computerphile, Odkud přišel GREP, rozhovor s Brian Kernighan
- ^ "ed regexes". perl.plover.com. Archivovány od originál dne 20. října 2017. Citováno 24. dubna 2018.
- ^ „Jak Grep dostal své jméno“. robots. thoughtbot.com. Archivovány od originál dne 9. srpna 2017. Citováno 24. dubna 2018.
- ^ A b McIlroy, M. D. (1987). Čtenář Research Unix: anotované výňatky z Programmer's Manual, 1971–1986 (PDF) (Technická zpráva). CSTR. Bell Labs. 139. Archivováno (PDF) od originálu 11. 11. 2017.
- ^ Abou-Assaleh, Tony; Wei Ai (březen 2004). Přehled nástrojů globálního tisku s regulárním výrazem (GREP) (Technická zpráva). Dalhousie University.
- ^ Hume, Andrew (1988). „Příběh dvou Grepů“. Software - praxe a zkušenosti. 18 (11): 1063. doi:10.1002 / spe. 4380181105. S2CID 6395770.
- ^ Meurant, Gerard (12. září 1990). Algoritmy a složitost. Elsevierova věda. p. 278. ISBN 9780080933917. Archivováno z původního dne 4. března 2016. Citováno 12. prosince 2015.
- ^ "grep". www.pubs.opengroup.org. Otevřená skupina. Archivováno z původního dne 28. listopadu 2015. Citováno 12. prosince 2015.
- ^ „pgrep (1)“. www.linux.die.net. Archivováno z původního dne 22. prosince 2015. Citováno 12. prosince 2015.
- ^ "grep". www.perldoc.perl.org. Archivováno z původního dne 7. prosince 2015. Citováno 12. prosince 2015.
- ^ "ruční stránka pcregrep". www.pcre.org. Univerzita v Cambridge. Archivováno z původního dne 23. prosince 2015. Citováno 12. prosince 2015.
- ^ "grep (1)". www.linux.die.net. Archivováno z původního dne 10. prosince 2015. Citováno 12. prosince 2015.
- ^ Spalding, George (2000). Správa systému Windows 2000. Knihovna profesionála v síti. Osborne / McGraw-Hill. str.634. ISBN 978-0-07-882582-8. Citováno 2010-12-10.
QGREP.EXE [:] Podobný nástroj jako grep v systému UNIX, tento nástroj lze použít k vyhledání textového řetězce
- ^ Uživatelská příručka k nástrojům MSX-DOS2 od ASCII Corporation
- ^ IBM. „IBM System i verze 7.2 Programování Qshell“ (PDF). Citováno 2020-09-05.
- ^ „Recenze: Adobe InDesign CS3 - CreativePro.com“. creativepro.com. 20. dubna 2007. Archivováno z původního dne 5. ledna 2018. Citováno 24. dubna 2018.
- ^ „Nápověda InDesign: najít / změnit“. Archivováno od originálu 2016-08-28. Citováno 2016-08-12.
- ^ „Archivovaná kopie“. Archivováno od původního dne 2017-09-24. Citováno 2018-01-05.CS1 maint: archivovaná kopie jako titul (odkaz)
- ^ „Nápověda InDesign: GREP styly“. Archivováno od originálu 2016-08-28. Citováno 2016-08-12.
- ^ S. Lee Henry (červen 1998). "Správné vyhledávání". Sun Expert. str. 35–26.
- ^ Soubor žargonu, článek "Dokumentace"
- Poznámky
- Alain Magloire (srpen 2000). Grep: Hledání vzoru. Iuniverse Inc. ISBN 0-595-10039-2.
- Hume, Andrew Grep wars: Iniciativa strategického vyhledávání. V Peter Collinson, redaktor, Sborník příspěvků z konference EUUG Spring 88, strany 237–245, Buntingford, Velká Británie, 1988. Evropská skupina uživatelů UNIX.
- Michael Hauben; et al. (Duben 1997). Netizens: O historii a dopadu sítě Usenet a internetu (perspektivy). Wiley-IEEE Computer Society Press. ISBN 978-0-8186-7706-9.
externí odkazy
- Oficiální web GNU Grep
- GNU Grep manuál
- Plán 9 Programátorská příručka, svazek 1 –
- Peklo Obecné příkazy Manuál –
- "proč je GNU grep rychlý" - podrobnosti implementace od autora GNU grep.
- Grep sítě - Analyzátor paketů používaný k porovnávání vzorů v síťové vrstvě
- Příkaz Grep - 25 praktických příkladů