grep

From Wikipedia, the free encyclopedia
  (Redirected from Fgrep)
Jump to: navigation, search
grep
Original author(s) Ken Thompson[1][2]
Initial release November 1974; 43 years ago (1974-11)[1]

grep is a command-line utility for searching plain-text data sets for lines that match a regular expression. Its name comes from the ed command g/re/p (globally search a regular expression and print), which has the same effect: doing a global search with the regular expression and printing all matching lines.[3][4] Grep was originally developed for the Unix operating system, but later available for all Unix-like systems.

History[edit]

First appearing in Version 4 Unix, grep was created by Ken Thompson as a standalone application adapted from the regular expression parser he had written for ed (which he also created).[1] In ed, the command g/re/p would print all lines matching a previously defined pattern.[5][6] Stating that it is "generally cited as the prototypical software tool", Doug McIlroy credited grep with "irrevocably ingraining" Thompson's tools philosophy in Unix.[7]

Variations[edit]

A variety of grep implementations are available in many operating systems and software development environments.[8] Early variants included egrep and fgrep, introduced in Version 7 Unix.[7] The "egrep" variant applies an extended regular expression syntax that was added to Unix after Ken Thompson's original regular expression implementation by Alfred Aho.[9] The "fgrep" variant searches for any of a list of fixed strings using the Aho–Corasick string matching algorithm.[10] Binaries of these variants persist in most modern systems, however their explicit usage has been deprecated and the functionalities of these variants are included in grep as the command-line switches -E and -F; the use of the switches is therefore the recommended method of use.[11]

Other commands contain the word "grep" to indicate that they search (usually for regular expression matches). The pgrep utility, for instance, displays the processes whose names match a given regular expression.[12]

In the Perl programming language, grep is the name of the built-in function that finds elements in a list that satisfy a certain property.[13] This higher-order function is typically named filter in functional programming languages.

The pcregrep command is an implementation of grep that uses Perl regular expression syntax.[14] Similar functionality can be invoked in the GNU version of grep with the -P flag.[15]

Ports of grep (within Cygwin and GnuWin32, for example) also run under Microsoft Windows. Some versions of Windows feature the similar qgrep or Findstr command.[16]

The software Adobe InDesign has functions GREP (since 2007 with CS3 version), in the search/change dialog box[17] "GREP" tab, and in paragraph styles[18] "GREP styles".

Usage as a verb[edit]

In December 2003, the Oxford English Dictionary Online added draft entries for "grep" as both a noun and a verb.

A common verb usage is the phrase "You can't grep dead trees"—meaning one can more easily search through digital media, using tools such as grep, than one could with a hard copy (i.e., one made from dead trees, paper).[19] Compare with google.

See also[edit]

References[edit]

  1. ^ a b c Kernighan, Brian (1984). The Unix Programming Environment. Prentice Hall. p. 102. ISBN 0-13-937681-X. 
  2. ^ “grep was a private command of mine for quite a while before i made it public.” -Ken Thompson, By Benjamin Rualthanzauva, Published on Feb 5, 2014, Medium
  3. ^ Hauben et al. 1997, Ch. 9
  4. ^ Raymond, Eric. "grep". Jargon File. Retrieved 2006-06-29. 
  5. ^ http://perl.plover.com/classes/HoldSpace/samples/slide012.html
  6. ^ http://robots.thoughtbot.com/how-grep-got-its-name
  7. ^ a b McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 139. 
  8. ^ Abou-Assaleh, Tony; Wei Ai (March 2004). Survey of Global Regular Expression Print (GREP) Tools (Technical report). Dalhousie University. 
  9. ^ Hume, Andrew (1988). "A Tale of Two Greps". Software—Practice & Experience. 18 (11): 1063. 
  10. ^ Meurant, Gerard (12 Sep 1990). Algorithms and Complexity. Elsevier Science. p. 278. Retrieved 12 December 2015. 
  11. ^ "grep". www.pubs.opengroup.org. The Open Group. Retrieved 12 December 2015. 
  12. ^ "pgrep(1)". www.linux.die.net. Retrieved 12 December 2015. 
  13. ^ "grep". www.perldoc.perl.org. Retrieved 12 December 2015. 
  14. ^ "pcregrep man page". www.pcre.org. University of Cambridge. Retrieved 12 December 2015. 
  15. ^ "grep(1)". www.linux.die.net. Retrieved 12 December 2015. 
  16. ^ Spalding, George (2000). Windows 2000 administration. Network professional's library. Osborne/McGraw-Hill. p. 634. ISBN 978-0-07-882582-8. Retrieved 2010-12-10. QGREP.EXE[:] A similar tool to grep in UNIX, this tool can be used to search for a text string 
  17. ^ "InDesign Help: search/change". Retrieved 2016-08-12. 
  18. ^ "InDesign Help: GREP stylus". Retrieved 2016-08-12. 
  19. ^ Jargon File, article "Documentation"
Notes
  • Alain Magloire (August 2000). Grep: Searching for a Pattern. Iuniverse Inc. ISBN 0-595-10039-2. 
  • Hume, Andrew Grep wars: The strategic search initiative. In Peter Collinson, editor, Proceedings of the EUUG Spring 88 Conference, pages 237–245, Buntingford, UK, 1988. European UNIX User Group.
  • Michael Hauben; et al. (April 1997). Netizens: On the History and Impact of Usenet and the Internet (Perspectives). Wiley-IEEE Computer Society Press. ISBN 978-0-8186-7706-9. 

External links[edit]