<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>等待喝彩_OnEcho &#187; 全面搜索</title>
	<atom:link href="http://www.onecho.com/tag/%e5%85%a8%e9%9d%a2%e6%90%9c%e7%b4%a2/feed" rel="self" type="application/rss+xml" />
	<link>http://www.onecho.com</link>
	<description>http://www.onecho.com  回声的启示</description>
	<lastBuildDate>Fri, 16 Jul 2010 14:18:16 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Linux服务器 Grep命令详解</title>
		<link>http://www.onecho.com/2008-09-03/114.html</link>
		<comments>http://www.onecho.com/2008-09-03/114.html#comments</comments>
		<pubDate>Wed, 03 Sep 2008 07:59:33 +0000</pubDate>
		<dc:creator>Kenami</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[网络编程]]></category>
		<category><![CDATA[Grep命令]]></category>
		<category><![CDATA[全面搜索]]></category>
		<category><![CDATA[正则表达式]]></category>

		<guid isPermaLink="false">http://blog.oneilove.com.cn/?p=114</guid>
		<description><![CDATA[1. grep简介

grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具，它能使用正则表达式搜索文本，并把匹配的行打印出来。Unix的grep家族包括grep、 egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展，支持更多的re元字符， fgrep就是 fixed grep或fast grep，它们把所有的字母都看作单词，也就是说，正则表达式中的元字符表示回其自身的]]></description>
			<content:encoded><![CDATA[<p>Linux服务器 Grep命令详解</p>
<p>1. grep简介</p>
<p>grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具，它能使用正则表达式搜索文本，并把匹配的行打印出来。Unix的grep家族包括grep、 egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展，支持更多的re元字符， fgrep就是 fixed grep或fast grep，它们把所有的字母都看作单词，也就是说，正则表达式中的元字符表示回其自身的字面意义，不再特殊。linux 使用GNU版本的grep。它功能更强，可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。</p>
<p>grep的工作方式是这样的，它在一个或多个文件中搜索字符串模板。如果模板包括空格，则必须被引用，模板后的所有字符串被看作文件名。搜索的结果被送到屏幕，不影响原文件内容。</p>
<p>grep可用于shell脚本，因为grep通过返回一个状态值来说明搜索的状态，如果模板搜索成功，则返回0，如果搜索不成功，则返回1，如果搜索的文件不存在，则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。</p>
<p>2. grep正则表达式元字符集(基本集)</p>
<p>^</p>
<p>锚定行的开始 如：&#8217;^grep&#8217;匹配所有以grep开头的行。</p>
<p>$</p>
<p>锚定行的结束 如：&#8217;grep$&#8217;匹配所有以grep结尾的行。</p>
<p>匹配一个非换行符的字符 如：&#8217;gr.p&#8217;匹配gr后接一个任意字符，然后是p。</p>
<p>*</p>
<p>匹配零个或多个先前字符 如：&#8217;*grep&#8217;匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。</p>
<p>[]</p>
<p>匹配一个指定范围内的字符，如&#8217;[Gg]rep&#8217;匹配Grep和grep。</p>
<p>[^]</p>
<p>匹配一个不在指定范围内的字符，如：&#8217;[^A-FH-Z]rep&#8217;匹配不包含A-R和T-Z的一个字母开头，紧跟rep的行。</p>
<p>\(..\)</p>
<p>标记匹配字符，如&#8217;\(love\)&#8217;，love被标记为1。</p>
<p>\&lt;</p>
<p>锚定单词的开始，如:&#8217;\\&gt;</p>
<p>锚定单词的结束，如&#8217;grep\&gt;&#8217;匹配包含以grep结尾的单词的行。</p>
<p>x\{m\}</p>
<p>重复字符x，m次，如：&#8217;0\{5\}&#8217;匹配包含5个o的行。</p>
<p>x\{m,\}</p>
<p>重复字符x,至少m次，如：&#8217;o\{5,\}&#8217;匹配至少有5个o的行。</p>
<p>x\{m,n\}</p>
<p>重复字符x，至少m次，不多于n次，如：&#8217;o\{5,10\}&#8217;匹配5&#8211;10个o的行。</p>
<p>\w</p>
<p>匹配文字和数字字符，也就是[A-Za-z0-9]，如：&#8217;G\w*p&#8217;匹配以G后跟零个或多个文字或数字字符，然后是p。</p>
<p>\W</p>
<p>\w的反置形式，匹配一个或多个非单词字符，如点号句号等。</p>
<p>\b</p>
<p>单词锁定符，如: &#8216;\bgrepb\&#8217;只匹配grep。</p>
<p>3. 用于egrep和 grep -E的元字符扩展集</p>
<p>+</p>
<p>匹配一个或多个先前的字符。如：&#8217;[a-z]+able&#8217;，匹配一个或多个小写字母后跟able的串，如loveable,enable,disable等。</p>
<p>?</p>
<p>匹配零个或多个先前的字符。如：&#8217;gr?p&#8217;匹配gr后跟一个或没有字符，然后是p的行。</p>
<p>a|b|c</p>
<p>匹配a或b或c。如：grep|sed匹配grep或sed</p>
<p>()</p>
<p>分组符号，如：love(able|rs)ov+匹配loveable或lovers，匹配一个或多个ov。</p>
<p>x{m},x{m,},x{m,n}</p>
<p>作用同x\{m\},x\{m,\},x\{m,n\}</p>
<p>4. POSIX字符类</p>
<p>为了在不同国家的字符编码中保持一至，POSIX(The Portable Operating System Interface)增加了特殊的字符类，如[:alnum:]是A-Za-z0-9的另一个写法。要把它们放到[]号内才能成为正则表达式，如[A- Za-z0-9]或[[: alnum:]]。在linux下的grep除fgrep外，都支持POSIX的字符类。</p>
<p>[:alnum:]</p>
<p>文字数字字符</p>
<p>[:alpha:]</p>
<p>文字字符</p>
<p>[:digit:]</p>
<p>数字字符</p>
<p>[:graph:]</p>
<p>非空字符(非空格、控制字符)</p>
<p>[:lower:]</p>
<p>小写字符</p>
<p>[:cntrl:]</p>
<p>控制字符</p>
<p>[:print:]</p>
<p>非空字符(包括空格)</p>
<p>[:punct:]</p>
<p>标点符号</p>
<p>[:space:]</p>
<p>所有空白字符(新行，空格，制表符)</p>
<p>[:upper:]</p>
<p>大写字符</p>
<p>[:xdigit:]</p>
<p>十六进制数字(0-9，a-f，A-F)</p>
<p>5. Grep命令选项</p>
<p>-?</p>
<p>同时显示匹配行上下的？行，如：grep -2 pattern filename同时显示匹配行的上下2行。</p>
<p>-b，&#8211;byte-offset</p>
<p>打印匹配行前面打印该行所在的块号码。</p>
<p>-c,&#8211;count</p>
<p>只打印匹配的行数，不显示匹配的内容。</p>
<p>-f File，&#8211;file=File</p>
<p>从文件中提取模板。空文件中包含0个模板，所以什么都不匹配。</p>
<p>-h，&#8211;no-filename</p>
<p>当搜索多个文件时，不显示匹配文件名前缀。</p>
<p>-i，&#8211;ignore-case</p>
<p>忽略大小写差别。</p>
<p>-q，&#8211;quiet</p>
<p>取消显示，只返回退出状态。0则表示找到了匹配的行。</p>
<p>-l，&#8211;files-with-matches</p>
<p>打印匹配模板的文件清单。</p>
<p>-L，&#8211;files-without-match</p>
<p>打印不匹配模板的文件清单。</p>
<p>-n，&#8211;line-number</p>
<p>在匹配的行前面打印行号。</p>
<p>-s，&#8211;silent</p>
<p>不显示关于不存在或者无法读取文件的错误信息。</p>
<p>-v，&#8211;revert-match</p>
<p>反检索，只显示不匹配的行。</p>
<p>-w，&#8211;word-regexp</p>
<p>如果被\&lt;和\&gt;引用，就把表达式做为一个单词搜索。</p>
<p>-V，&#8211;version</p>
<p>显示软件版本信息。</p>
<p>6. 实例</p>
<p>要用好grep这个工具，其实就是要写好正则表达式，所以这里不对grep的所有功能进行实例讲解，只列几个例子，讲解一个正则表达式的写法。</p>
<p>$ ls -l | grep &#8216;^a&#8217;</p>
<p>通过管道过滤ls -l输出的内容，只显示以a开头的行。</p>
<p>$ grep &#8216;test&#8217; d*</p>
<p>显示所有以d开头的文件中包含test的行。</p>
<p>$ grep &#8216;test&#8217; aa bb cc</p>
<p>显示在aa，bb，cc文件中匹配test的行。</p>
<p>$ grep &#8216;[a-z]\{5\}&#8217; aa</p>
<p>显示所有包含每个字符串至少有5个连续小写字符的字符串的行。</p>
<p>$ grep &#8216;w\(es\)t.*\1&#8242; aa</p>
<p>如果west被匹配，则es就被存储到内存中，并标记为1，然后搜索任意个字符(.*)，这些字符后面紧跟着另外一个es(\1)，找到就显示该行。如果用egrep或grep -E，就不用&#8221;\&#8221;号进行转义，直接写成&#8217;w(es)t.*\1&#8242;就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.onecho.com/2008-09-03/114.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
