For faster navigation, this Iframe is preloading the Wikiwand page for grep.

grep

grep是一个最初用于Unix操作系统的命令行工具。在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配(或者不匹配)的行或文本。

grep这个应用程式最早由肯·汤普逊写成。grep原先是ed下的一个应用程式,名称来自于g/re/p(globally search a regular expression and print,以正则表达式进行全局查找以及打印)。在ed下,输入g/re/p这个命令后,会将所有符合先定义样式的字符串,以行为单位打印出来。

在1973年,Unix第四版中,grep首次出现在man页面中。

功能和用法

[编辑]

这个程序的名称来自Unix文本编辑器ed类似操作的命令:

g/re/p

这个命令搜索整个文件中匹配给定正则表达式的文本行,并显示出来。有很多不同的命令行用于改变grep的默认行为,包括显示出不匹配的文本行、查找或排除搜索的文件以及用不同的方式在输出中进行注释。同时也有很多经典Unix下grep的现代版本,这些版本都有着独特的功能。

这里是一个常见的grep用法:

grep apple fruitlist.txt

在这个例子里,grep会返回“fruitlist.txt”中所有包含“apple”的文本行。要注意的是,grep不会返回匹配“Apple”(A字母大写)的文本行,因为grep默认情况下是大小写敏感的。像大多数Unix命令行一样,grep接受参数来改变或增加一些特别的功能。例如:

grep -i apple fruitlist.txt

这个命令会返回所有匹配“apple”、“Apple”、“apPLE”或其它混合大小写的拼写。

在一些grep版本中,参数 -e 可以用于使用多个匹配样式来进行搜索。

修改版

[编辑]
此条目不符合维基百科的质量标准,需要完全重写。 (2015年12月14日)请在讨论页中讨论相关议题,并参考更优秀条目写作指南

存在很多grep的修改版,例如agrep表示“近似的grep”approximate grep用于模糊字符串搜索,fgrep用于固定样式搜索fixed pattern searches,而egrep用于搜索更复杂的正则表达式语法。

fgrep和egrep同grep基本上是一样的程序。因为通过调用不同的参数,grep可以实现大多数功能。Tcgrep是用Perl正则表达式语言重写的grep。所有grep的修改版都被应用到很多不同的操作系统中。

有一些其它的命令行名称也包含了"grep"。如pgrep是用来显示名称匹配正则表达式进程

Perl中,grep是内建的功能,当提供正则表达式(或通用代码块)和一个列表时,会返回列表中匹配表达式的元素。在函数编程语言中,这个高阶函数常称为“过滤器”。

微软Windows平台提供了一个叫"findstr"的工具来执行grep的大多数功能。

作为动词的用法

[编辑]
此条目不符合维基百科的质量标准,需要完全重写。 (2015年12月14日)请在讨论页中讨论相关议题,并参考更优秀条目写作指南

由于“grep”很适合用英语发音,所以常被作为动词使用,意为“搜索”–这种搜索通常是指使用grep工具来对已知的一系列文件进行的搜索。和google作为动词时的用法类似,grep可以直接接搜索对象做谓语,如“Kibo英语Kibo在他的Usenet上搜索自己的名字(Kibo英语Kibo grepped his Usenet spool for his name.)”。有时候会用visual grep来表示使用grep的形式来从文本中找出某些资讯。

2003年12月,“牛津英语辞典在线版”添加了"grep"词条,该词条可以作为名词或动词来使用。

作为一个动词,grep一个常见的用法如下: “你不能grep死了的树(You can't grep dead trees)” -由于纸是由死了的树做成的,所以这句话是说:你不能在传统的非数码媒体上使用grep如此简单强大的搜索功能。

单词“grep”也成了正则表达式的同义词。许多文档处理器现在也有了使用正则表达式搜索的功能,这些功能常被称为“grep工具”或“grep模式”并可以创建“grep样式”,同时也导致出现混淆,特别是在非Unix环境下。

egrep和fgrep

[编辑]

grep的早期修改版包括了egrep和fgrep。前者使用了Ken Thompson最初的正则表达式实现后添加到UNIX的扩展正则表达式语法。后者则是简单地读取一系列固定字符串来对文件进行搜索。这些早期的修改版被加入到多数现代的grep实现,只需要使用简单的命令行参数就行了(如在GNU中,只要分别简单地加上-E-F就可以了)。

参考文献

[编辑]
  • Alain Magloire. Grep: Searching for a Pattern. Iuniverse Inc. August 2000. ISBN 0-595-10039-2. 
  • Andrew Hume. 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.
  • Raymond, Eric (editor). grep. Jargon File. [2006-06-29]. (原始内容存档于2006-06-17). 

外部链接

[编辑]

参见

[编辑]
{{bottomLinkPreText}} {{bottomLinkText}}
grep
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?