Grep

Grep
Grep example.png
Beispiel von Grep Befehl
Originalautor (en) Ken Thompson[1][2]
Entwickler (en) AT & T Bell Laboratories
Erstveröffentlichung November 1973; Vor 48 Jahren[1]
Geschrieben in C
Betriebssystem Unix, Unix-artig, Plan 9, Inferno, OS-9, MSX-dos, Ibm i
Plattform Plattformübergreifend
Typ Befehl
Lizenz Plan 9: MIT -Lizenz

Grep ist ein Befehlszeile Dienstprogramm für die Suche nach Klartextdatensätzen für Zeilen, die a übereinstimmen regulären Ausdruck. Sein Name kommt von der ed Befehl g/re/p (Suchen Sie weltweit nach einem regulären Ausdruck und Druckpassungszeilen), was den gleichen Effekt hat.[3][4] Grep wurde ursprünglich für die entwickelt Unix Betriebssystem, aber später für alle verfügbar Unix-artig Systeme und einige andere wie OS-9.[5]

Geschichte

Bevor es benannt wurde, war Grep ein privates Dienstprogramm von geschrieben von Ken Thompson Suchen Sie nach Dateien nach bestimmten Mustern. Doug McIlroy, ohne sich seiner Existenz zu bewusst, bat Thompson, ein solches Programm zu schreiben. Als er antwortete, dass er über Nacht über einen solchen Dienstprogramm nachdenken würde, korrigierte Thompson Fehler und verbesserte sich für etwa eine Stunde. Am nächsten Tag überreichte er das Programm McIlroy, der sagte, es sei genau das, was er wollte. Thompsons Bericht könnte die Überzeugung erklären, dass Grep über Nacht geschrieben wurde.[6]

Thompson schrieb die erste Version in PDP-11 Montagesprache helfen Lee E. McMahon Analysieren Sie den Text der Föderalistische Papiere Ermittlung der Urheberschaft der einzelnen Papiere.[7] Das ED -Texteditor (Auch von Thompson verfasst) hatte regulären Ausdruck Unterstützung, konnte aber nicht für eine so große Menge an Text verwendet werden, sodass Thompson diesen Code in ein eigenständiges Tool ausgab.[1] Er wählte den Namen, weil in Ed, den Befehl g/re/p würde alle Zeilen drucken, die einem bestimmten Muster entsprechen.[8][9] Grep wurde zuerst in enthalten Version 4 Unix. Mit der Angabe, dass es "allgemein als zitiert wird als das Prototypisches Software -Tool ", mcIlroy gutgeschrieben Grep mit "unwiderruflich eingreifend" Thompson's Werkzeugphilosophie in Unix.[10]

Stichprobenverbrauch

Das folgende Beispiel zeigt die Ausgabe der Grep Befehl bei unterschiedlichen Argumenten

$ Grep Root /etc /PasswdWurzel: x: 0: 0: root:/root:/bin/bash Operator: x: 11: 0: Operator:/root:/sbin/nologin $ grep -n root /etc /passwd1: root: x: 0: 0: root:/root:/bin/bash 12: Operator: x: 11: 0: Operator:/root:/sbin/nologin $ grep -c FALSCH /etc/passwd7 

Implementierungen

Eine Vielzahl von Grep Implementierungen sind in vielen Betriebssystemen und Softwareentwicklungsumgebungen verfügbar.[11] Frühe Varianten enthalten Egrep und FGREP, eingeführt in Version 7 Unix.[10] Das "Egrep"Variante unterstützt eine erweiterter regulärer Ausdruck Syntax hinzugefügt von Alfred Aho nach Ken ThompsonDie ursprüngliche regelmäßige Expression Implementierung.[12] Das "FGREP"Variante sucht nach einer Liste von Fest Saiten mit dem AHO -Corasick -String -Matching -Algorithmus.[13] Binärdateien dieser Varianten bestehen in den meisten modernen Systemen bestehen und verknüpfen normalerweise mit Grep; Die Verwendung dieser Binärdateien wurde jedoch für die Verwendung der Verwendung veraltet -E und -F Befehlszeilenschalter von Grep stattdessen.[14]

Andere Befehle enthalten das Wort "Grep", um anzuzeigen, dass es sich um Suchwerkzeuge handelt, in der Regel diejenigen, die auf regelmäßige Ausdrucksübereinstimmungen angewiesen sind. Das PGREP Das Dienstprogramm zeigt beispielsweise die Prozesse an, deren Namen einem bestimmten regulären Ausdruck übereinstimmen.[15]

In dem Perl Programmiersprache, Grep ist der Name der integrierten Funktion, die Elemente in einer Liste findet, die eine bestimmte Eigenschaft erfüllen.[16] Dies Funktion höherer Ordnung wird normalerweise benannt Filter oder wo in anderen Sprachen.

Das pcregrep Befehl ist eine Implementierung von Grep das verwendet Perl regulärer Ausdruck Syntax.[17] Eine ähnliche Funktionalität kann in der GNU -Version von aufgerufen werden Grep mit dem -P Flagge.[18]

Häfen von Grep (innerhalb Cygwin und Gnuwin32zum Beispiel) läuft auch unter Microsoft Windows. Einige Versionen von Windows enthalten ähnlich qgrep oder Findstr Befehl.[19]

A Grep Befehl ist auch Teil von ASCII's MSX-DOS2-Tools zum MSX-dos Version 2.[20]

Das Grep, Egrep, und FGREP Befehle wurden auch auf die portiert Ibm i Betriebssystem.[21]

Die Software Adobe Indesign hat Funktionen Grep (seit CS3 -Version (2007)[22]), in dem Finden/Veränderung Dialogbox[23] "Grep" Tab und mit InDesign CS4 eingeführt[24] in Absatzstile[25] "Grep Styles".

Agrep

aGrep (ungefähre Grep) stimmt auch dann überein etwa passt zum Suchmuster.[26]

Dieser folgende Aufruf findet Netzmasken im Ordner meine Datei, aber auch jedes andere Wort, das daraus abgeleitet werden kann, angegeben nicht mehr als zwei Substitutionen.

AGREP -2 NETMASKS MYFILE

Dieses Beispiel generiert eine Liste von Übereinstimmungen mit dem nächsten, dh diejenigen mit den wenigsten, die zuerst aufgeführt sind. Die Befehlsflagge B meint Beste:

agrep -b netmasks myfile

Verwendung als Verb

Im Dezember 2003 die Oxford Englisch Wörterbuch Online Draft -Einträge für "Grep" als Substantiv und ein Verb hinzugefügt.[27]

Eine übliche Verb Verwendung ist der Ausdruck "Sie können nicht tote Bäume grep bäume haben". Einen Merkmal kann einfacher durch digitale Medien suchen, indem man Tools wie z. Grep, als man mit einer harten Kopie konnte (d. H. Eine aus "toten Bäumen", was in diesem Zusammenhang a ist Dysphemismus für Papier).[28]

Siehe auch

Verweise

  1. ^ a b c Kernighan, Brian (1984). Die UNIX -Programmierumgebung. Prentice Hall. pp.102. ISBN 0-13-937681-x.
  2. ^ "Grep war eine ganze Weile ein privates Kommando von mir, bevor ich es öffentlich gemacht habe." -Ken Thompson Archiviert 2015-05-26 bei der Wayback -Maschine, Von Benjamin Ralthanzauva, veröffentlicht am 5. Februar 2014, Medium
  3. ^ Hauben et al. 1997, Ch. 9
  4. ^ Raymond, Eric. "Grep". Jargon -Datei. Archiviert von das Original Am 2006-06-17. Abgerufen 2006-06-29.
  5. ^ Paul S. Dayan (1992). Der OS -9 -Guru - 1: Die Fakten. Galaktische Industrial Limited. ISBN 0-9519228-0-7.
  6. ^ VCF East 2019 - Brian Kernighan interviewt Ken Thompson (Video). Youtube. 6. Mai 2019. Archiviert vom Original am 2021-12-11. (35 Minuten)
  7. ^ Computerphile, Woher Grep kommt, Interview mit Brian Kernighan
  8. ^ "Ed Regexes". perl.plover.com. Archiviert von das Original am 20. Oktober 2017. Abgerufen 24. April 2018.
  9. ^ "Wie Grep seinen Namen hat". Robots.thoughtbot.com. Archiviert von das Original am 9. August 2017. Abgerufen 24. April 2018.
  10. ^ a b McIlroy, M. D. (1987). A Research Unix Reader: Annotierte Auszüge aus dem Programmierhandbuch, 1971–1986 (PDF) (Technischer Bericht). Cstr. Bell Labs. 139. Archiviert (PDF) vom Original am 2017-11-11.
  11. ^ Abou-Assaleh, Tony; Wei Ai (März 2004). Übersicht über GREP -Tools für reguläre Ausdrucksdrucke (GREP) (Technischer Bericht). Dalhousie University.
  12. ^ Hume, Andrew (1988). "Eine Geschichte von zwei Greps". Software: Übung und Erfahrung. 18 (11): 1063. doi:10.1002/spe.4380181105. S2CID 6395770.
  13. ^ Meurant, Gerard (12. September 1990). Algorithmen und Komplexität. Elsevier Science. p. 278. ISBN 9780080933917. Archiviert Aus dem Original am 4. März 2016. Abgerufen 12. Dezember 2015.
  14. ^ "Grep". www.pubs.opengroup.org. Die offene Gruppe. Archiviert Aus dem Original am 28. November 2015. Abgerufen 12. Dezember 2015.
  15. ^ "PGREP (1)". www.linux.die.net. Archiviert vom Original am 22. Dezember 2015. Abgerufen 12. Dezember 2015.
  16. ^ "Grep". www.perldoc.perl.org. Archiviert Aus dem Original am 7. Dezember 2015. Abgerufen 12. Dezember 2015.
  17. ^ "PcreGrep Man Page". www.pcre.org. Universität von Cambridge. Archiviert Aus dem Original am 23. Dezember 2015. Abgerufen 12. Dezember 2015.
  18. ^ "Grep (1)". www.linux.die.net. Archiviert Aus dem Original am 10. Dezember 2015. Abgerufen 12. Dezember 2015.
  19. ^ Spalding, George (2000). Windows 2000 Administration. Bibliothek des Netzwerkprofis. Osborne/McGraw-Hill. pp.634. ISBN 978-0-07-882582-8. Abgerufen 2010-12-10. Qgrep.exe [:] Ein ähnliches Tool wie Grep in UNIX. Dieses Tool kann verwendet werden, um nach einer Textzeichenfolge zu suchen
  20. ^ "MSX-DOS2-Tools-Benutzerhandbuch von ASCII Corporation".
  21. ^ IBM. "IBM System I Version 7.2 Programmierung Qshell" (PDF). Abgerufen 2020-09-05.
  22. ^ "Bewertung: Adobe Indesign CS3 - CreativePro.com". CreativePro.com. 20. April 2007. Archiviert Aus dem Original am 5. Januar 2018. Abgerufen 24. April 2018.
  23. ^ "Indesign Hilfe: Finden/Veränderung". Archiviert vom Original am 2016-08-28. Abgerufen 2016-08-12.
  24. ^ "InDesign: Grep Styles (1) Setzen Sie den Text zwischen Klammern iäuschen" fest ". Archiviert vom Original am 2017-09-24. Abgerufen 2018-01-05.
  25. ^ "InDesign Hilfe: Grep Styles". Archiviert vom Original am 2016-08-28. Abgerufen 2016-08-12.
  26. ^ S. Lee Henry (Juni 1998). "Richtige Suche". Sonnenexperte. S. 35–26.
  27. ^ "Neue Wörter Liste Dezember 2003". Oxford Englisch Wörterbuch. Abgerufen 2021-12-06.
  28. ^ Jargon -Datei, Artikel "Dokumentation"
Anmerkungen
  • Alain Magloire (August 2000). Grep: Auf der Suche nach einem Muster. Iuniverse Inc. ISBN 0-595-10039-2.
  • Hume, Andrew Grep Wars: Die strategische Suchinitiative. In Peter Collinson, Herausgeber, Verfahren der EUUG Spring 88 Conference, Seiten 237–245, Buntingford, Großbritannien, 1988. Europäische Unix -Benutzergruppe.
  • Michael Hauben; et al. (April 1997). Internetnutzer: Über die Geschichte und Auswirkungen von Usenet und Internet (Perspektiven). Wiley-ieee Computer Society Press. ISBN 978-0-8186-7706-9.

Externe Links