grep是一个命令行最初用于Unix操作系统的工具。在给出文件列表或标准输入后,grep会对匹配一个或多个正则表达式的文本进行搜索,并只输出匹配的文本。
目录 |
这个程序的名称来自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 可以用于使用多个匹配样式来进行搜索。
| 此条目或段落不符合维基百科的质量标准,需要完全重写。 请在讨论页中讨论相关议题,并参考更优秀条目写作指南。 |
存在很多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的大多数功能。
| 此条目或段落不符合维基百科的质量标准,需要完全重写。 请在讨论页中讨论相关议题,并参考更优秀条目写作指南。 |
由于“grep”很适合用英语发音,所以常被作为动词使用,意为“搜索”–通常是使用grep工具来对已知的一系列文件进行搜索。有google类似,直接谓语是搜索的一系列文件,如“Kibo用自己的名字grep他的Usenet(Kibo grepped his Usenet spool for his name.)”。有时候会用visual grep来表示使用grep的形式来从文本中找出某些信息。
2003年12月,“牛津英语辞典在线版”将"grep"作为名词和动词添加。
一个常见的用法是“你不能grep死树(You can't grep dead trees)” - 表示计算机文档比印刷的文档好(纸是由死树制作的),因为计算机可以使用类似grep的工具对文件进行搜索。
单词“grep”也成了正则表达式的同义词。许多文档处理器现在也有了使用正则表达式搜索的功能,这些功能常被称为“grep工具”或“grep模式”并可以创建“grep样式”,同时也导致出现混淆,特别是在非Unix环境下。
grep的早期修改版包括了egrep和fgrep。前者使用了Ken Thompson最初的正则表达式实现后添加到UNIX的扩展正则表达式语法。后者则是简单地读取一系列固定字符串来对文件进行搜索。这些早期的修改版被加入到多数现代的grep实现,只需要使用简单的命令行参数就行了(如在GNU中,只要分别简单地加上-E和-F就可以了)。
|
查看 • 讨论 • 编辑 • 历史
Unix命令行程序 |
|||
| 文件和文件系统管理: | cat | chattr | cd | chmod | chown | chgrp | cksum | cmp | cp | du | df | file | fsck | ln | ls | lsof | mkdir | mount | mv | pwd | rm | rmdir | split | touch | ||
| 管理: | at | chroot | crontab | exit | kill | killall | nice | pgrep | pidof | pkill | ps | sleep | time | top | wait | watch | bg | fg | ||
| 用户管理/环境: | env | finger | id | mesg | passwd | su | sudo | uname | uptime | w | wall | who | whoami | write | ||
| 文本处理: | awk | comm | cut | ed | ex | fmt | head | iconv | join | less | more | paste | sed | sort | tac | tail | tr | uniq | wc | xargs | ||
| Shell编程: | basename | echo | expr | false | printf | test | true | unset | 打印: | lp |
| 网络通信: inetd | netstat | ping rlogin | traceroute | netcat |
搜索: find | grep | strings |
其他: banner | bc | cal | dd | man | size | yes |
|
stock | retire | vm
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History