grep - grep
Ursprungliga författare | Ken Thompson |
---|---|
Utvecklare | AT&T Bell Laboratories |
Initial release | November 1973 |
Operativ system | Unix , Unix-liknande , Plan 9 , Inferno , OS-9 , MSX-DOS , IBM i |
Plattform | Plattformsoberoende |
Typ | Kommando |
grep
är ett kommandoradsverktyg för att söka rena textuppsättningar efter rader som matchar ett vanligt uttryck . Dess namn kommer från ed kommandot g / re / p ( g lobally söka efter en r egular e Xpression och p rint matchningslinjer ), som har samma effekt. grep
utvecklades ursprungligen för Unix- operativsystemet, men senare tillgängligt för alla Unix-liknande system och några andra som OS-9 .
Historia
Innan det namngavs var grep ett privat verktyg som Ken Thompson skrev för att söka efter filer efter vissa mönster. Doug McIlroy , omedveten om dess existens, bad Thompson att skriva ett sådant program. Som svar på att han skulle tänka på ett sådant verktyg över en natt korrigerade Thompson faktiskt buggar och gjorde förbättringar i ungefär en timme. Dagen efter presenterade han programmet för McIlroy, som sa att det var precis vad han ville. Thompsons berättelse kan förklara tron att grep skrevs över en natt.
Thompson skrev den första versionen på PDP-11- monteringsspråk för att hjälpa Lee E. McMahon att analysera texten i Federalist Papers för att bestämma författarskapet till de enskilda tidningarna. Den redigerade textredigeraren (även författad av Thompson) hade stöd för vanligt uttryck men kunde inte användas på en så stor mängd text, så Thompson tog ut den koden till ett fristående verktyg. Han valde namnet eftersom kommandot g/re/p i ed skulle skriva ut alla rader som matchade ett angivet mönster. grep
ingick först i version 4 Unix . Med uttalande om att det är "allmänt citerat som det prototypiska mjukvaruverktyget", krediteras McIlroy för att grep
"oåterkalleligt förankra" Thompsons verktygsfilosofi i Unix.
Provanvändning
Följande exempel visar utmatningen av grep
kommandot med olika argument
$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
$ grep -n root /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
12:operator:x:11:0:operator:/root:/sbin/nologin
$ grep -c false /etc/passwd
7
Implementeringar
En mängd olika grep
implementeringar finns tillgängliga i många operativsystem och mjukvaruutvecklingsmiljöer. Tidiga varianter inkluderade egrep
och fgrep
introducerades i version 7 Unix . " egrep
" -Varianten stöder en utökad syntax för reguljärt uttryck som tillagts av Alfred Aho efter Ken Thompsons ursprungliga implementering av reguljära uttryck. " fgrep
" -Varianten söker efter någon av en lista med fasta strängar med hjälp av Aho – Corasick strängmatchningsalgoritm . Binärer av dessa varianter kvarstår i de flesta moderna system, vanligtvis länkar till grep
; Användningen av dessa binärer har dock avvecklats till förmån för att använda -E
och och -F
kommandoradsväxlarna grep
istället.
Andra kommandon innehåller ordet "grep" för att indikera att de är sökverktyg, vanligtvis sådana som är beroende av regelbundna uttrycksmatchningar. Den pgrep
nytta, till exempel, visar processer vars namn matchar ett givet reguljärt uttryck.
I programmeringsspråket Perl är grep namnet på den inbyggda funktionen som hittar element i en lista som uppfyller en viss egenskap. Denna högre ordningsfunktion heter vanligtvis filter
eller where
på andra språk.
Det pcregrep
kommando är en implementering av grep
som använder Perl reguljära uttryck syntax. Liknande funktionalitet kan åberopas i GNU -versionen av grep
med -P
flaggan.
Portar av grep
(inom Cygwin och GnuWin32 , till exempel) körs också under Microsoft Windows . Vissa versioner av Windows har liknande qgrep
eller findstr
kommando.
Ett grep
kommando är också en del av ASCII : s MSX-DOS2-verktyg för MSX-DOS version 2.
De grep , egrep och fgrep kommandon har också portas till IBM i operativsystemet.
Mjukvaran Adobe InDesign har funktioner GREP (sedan CS3 version (2007)), i Sök / dialogrutan "GREP" -fliken, och introducerades med InDesign CS4 i styckeformat "GREP stilar".
instämmer
en grep (ungefärlig grep) matchar även när texten bara ungefär passar sökmönstret.
Detta följande anrop hittar nätmasker i filen myfile , men också alla andra ord som kan härledas från det, med högst två substitutioner.
agrep -2 netmasks myfile
Detta exempel genererar en lista över matchningar med de närmaste, det vill säga de med minst antal, substitutioner listade först. Kommandoflaggan B betyder bäst :
agrep -B netmasks myfile
Användning som verb
I december 2003 lade Oxford English Dictionary Online till utkast till "grep" som både substantiv och verb.
En vanlig verbanvändning är frasen "Du kan inte grep döda träd" - vilket betyder att man lättare kan söka igenom digitala medier med hjälp av verktyg som, t.ex. grep
, med en papperskopia (dvs. i detta sammanhang är en dysfemi för papper). Jämför med google .
Se även
- Boyer – Moore strängsökningsalgoritm
- enig , ett ungefärligt kommando för strängmatchning
-
find (Windows) , ett DOS- och Windows -kommando som utför textsökningar, liknande en enkel
grep
-
find (Unix) , ett Unix -kommando som hittar filer efter attribut, mycket annorlunda än
grep
- Lista över Unix -kommandon
-
vgrep , eller "visuell
grep
" - ngrep , nätverket grep
Referenser
- Anteckningar
- Alain Magloire (augusti 2000). Grep: Söker efter ett mönster . Iuniverse Inc. ISBN 0-595-10039-2.
- Hume, Andrew Grep krig: Det strategiska sökinitiativet. I Peter Collinson, redaktör, Proceedings of the EUUG Spring 88 Conference , sidorna 237–245, Buntingford, Storbritannien, 1988. European UNIX User Group.
- Michael Hauben ; et al. (April 1997). Netizens: On the History and Impact of Usenet and Internet (Perspectives) . Wiley-IEEE Computer Society Press. ISBN 978-0-8186-7706-9.
externa länkar
- GNU Grep officiella webbplats
- GNU Grep manual
- Plan 9 programmerarhandbok, volym 1 -
- Inferno Allmänna kommandon Manual -
- "varför GNU grep är snabb" - implementeringsdetaljer från GNU greps författare.
- Command Grep - 25 praktiska exempel