<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>meisw's blog</title>
		<link>http://meisw.wdlinux.cn//</link>
		<description>工作,学习,生活,这里将会有一些记录.     备用域名:http://meisw.wdlinux.cn</description>
		<copyright>Copyright (C) 2004 Security Angel Team [S4T] All Rights Reserved.</copyright>
		<generator>SaBlog-X Version 1.6 Build 20080806</generator>
		<lastBuildDate>Tue, 29 Sep 2026 10:29:48 +0000</lastBuildDate>
		<ttl>30</ttl>
		<item>
			<guid>http://meisw.wdlinux.cn//show-560-1.html</guid>
			<title>linux grep命令参数及用法详解</title>
			<author>admin</author>
			<description><![CDATA[<p><strong>功能说明：</strong>查找文件里符合条件的字符串。<br />
<br />
<strong>语　　法：</strong><u>grep</u>&nbsp;[-abcEFGhHilLnqrsvVwxy][-A&lt;显示列数&gt;][-B&lt;显示列数&gt;][-C&lt;显示列数&gt;][-d&lt;进行动作&gt;][-e&lt;范本样式&gt;][-f&lt;范本文件&gt;][--help][范本样式][文件或目录...]<br />
<br />
<strong>补充说明：</strong>grep指令用于查找内容包含指定的范本样式的文件，如果发现某文件的内容符合所指定的范本样式，预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称，或是所给予的文件名为&ldquo;-&rdquo;，则grep指令会从标准输入设备读取数据。<br />
<br />
<strong>参　　数：</strong><br />
&nbsp;&nbsp;-a或--t<u>ex</u>t&nbsp;&nbsp;&nbsp;不要忽略二进制的数据。<br />
&nbsp;&nbsp;-A&lt;显示列数&gt;或--after-context=&lt;显示列数&gt;&nbsp;&nbsp;&nbsp;除了显示符合范本样式的那一列之外，并显示该列之后的内容。<br />
&nbsp;&nbsp;-b或--byte-offset&nbsp;&nbsp;&nbsp;在显示符合范本样式的那一列之前，标示出该列第一个字符的位编号。<br />
&nbsp;&nbsp;-B&lt;显示列数&gt;或--before-context=&lt;显示列数&gt;&nbsp;&nbsp;&nbsp;除了显示符合范本样式的那一列之外，并显示该列之前的内容。<br />
&nbsp;&nbsp;-c或--count&nbsp;&nbsp;&nbsp;计算符合范本样式的列数。<br />
&nbsp;&nbsp;-C&lt;显示列数&gt;或--context=&lt;显示列数&gt;或-&lt;显示列数&gt;&nbsp;&nbsp;&nbsp;除了显示符合范本样式的那一列之外，并显示该列之前后的内容。<br />
&nbsp;&nbsp;-d&lt;进行动作&gt;或--directories=&lt;进行动作&gt;&nbsp;&nbsp;&nbsp;当指定要查找的是目录而非文件时，必须使用这项参数，否则grep指令将回报信息并停止动作。<br />
&nbsp;&nbsp;-e&lt;范本样式&gt;或--regexp=&lt;范本样式&gt;&nbsp;&nbsp;&nbsp;指定字符串做为查找文件内容的范本样式。<br />
&nbsp;&nbsp;-E或--extend<u>ed</u>-regexp&nbsp;&nbsp;&nbsp;将范本样式为延伸的普通表示法来使用。<br />
&nbsp;&nbsp;-f&lt;范本文件&gt;或--<u>file</u>=&lt;范本文件&gt;&nbsp;&nbsp;&nbsp;指定范本文件，其内容含有一个或多个范本样式，让grep查找符合范本条件的文件内容，格式为每列一个范本样式。<br />
&nbsp;&nbsp;-F或--fixed-regexp&nbsp;&nbsp;&nbsp;将范本样式视为固定字符串的列表。<br />
&nbsp;&nbsp;-G或--basic-regexp&nbsp;&nbsp;&nbsp;将范本样式视为普通的表示法来使用。<br />
&nbsp;&nbsp;-h或--no-filename&nbsp;&nbsp;&nbsp;在显示符合范本样式的那一列之前，不标示该列所属的文件名称。<br />
&nbsp;&nbsp;-H或--with-filename&nbsp;&nbsp;&nbsp;在显示符合范本样式的那一列之前，表示该列所属的文件名称。<br />
&nbsp;&nbsp;-i或--ignore-case&nbsp;&nbsp;&nbsp;忽略字符大小写的差别。<br />
&nbsp;&nbsp;-l或--file-with-matches&nbsp;&nbsp;&nbsp;列出文件内容符合指定的范本样式的文件名称。<br />
&nbsp;&nbsp;-L或--files-without-match&nbsp;&nbsp;&nbsp;列出文件内容不符合指定的范本样式的文件名称。<br />
&nbsp;&nbsp;-n或--line-number&nbsp;&nbsp;&nbsp;在显示符合范本样式的那一列之前，标示出该列的列数编号。<br />
&nbsp;&nbsp;-q或--quiet或--silent&nbsp;&nbsp;&nbsp;不显示任何信息。<br />
&nbsp;&nbsp;-r或--recursive&nbsp;&nbsp;&nbsp;此参数的效果和指定&ldquo;-d&nbsp;recurse&rdquo;参数相同。<br />
&nbsp;&nbsp;-s或--no-messages&nbsp;&nbsp;&nbsp;不显示错误信息。<br />
&nbsp;&nbsp;-v或--revert-match&nbsp;&nbsp;&nbsp;反转查找。<br />
&nbsp;&nbsp;-V或--version&nbsp;&nbsp;&nbsp;显示版本信息。<br />
&nbsp;&nbsp;-w或--word-regexp&nbsp;&nbsp;&nbsp;只显示全字符合的列。<br />
&nbsp;&nbsp;-x或--line-regexp&nbsp;&nbsp;&nbsp;只显示全列符合的列。<br />
&nbsp;&nbsp;-y&nbsp;&nbsp;&nbsp;此参数的效果和指定&ldquo;-i&rdquo;参数相同。<br />
&nbsp;&nbsp;--help&nbsp;&nbsp;&nbsp;在线帮助。</p>
<h4 style="text-align: center">linux grep命令的使用</h4>
<p style="text-indent: 2em">用&amp;<u>ls</u>quo;grep&rsquo;搜索文本文件</p>
<div>如果您要在几个文本文件中查找一字符串，可以使用&lsquo;grep&rsquo;命令。&lsquo;grep&rsquo;在文本中搜索指定的字符串。<br />
假设您正在&lsquo;/usr/src/linux/Documentation&rsquo;目录下搜索带字符串&lsquo;magic&rsquo;的文件：</div>
<p style="text-indent: 2em">$ grep magic /usr/src/linux/Documentation/* <br />
sysrq.txt:* How do I enable the magic SysRQ key?<br />
sysrq.txt:* How do I use the magic SysRQ key?<br />
&nbsp;</p>
<div>其中文件&lsquo;sysrp.txt&rsquo;包含该字符串，讨论的是 SysRQ 的功能。</div>
<div>默认情况下，&lsquo;grep&rsquo;只搜索当前目录。如果此目录下有许多子目录，&lsquo;grep&rsquo;会以如下形式列出：</div>
<div>grep: sound: Is a directory</div>
<div>这可能会使&lsquo;grep&rsquo;的输出难于阅读。这里有两种解决的办法：</div>
<ul>
    <li>明确要求搜索子目录：grep -r</li>
    <li>或忽略子目录：grep -d skip</li>
</ul>
<div>当然，如果预料到有许多输出，您可以通过 管道 将其转到&lsquo;<u>less</u>&rsquo;上阅读： <font color="#ffffff">feedom.net</font></div>
<div>$ grep magic /usr/src/linux/Documentation/* | less</div>
<div>这样，您就可以更方便地阅读。 <font color="#ffffff">www.bitsCN.com</font></div>
<div>有一点要注意，您必需提供一个文件过滤方式（搜索全部文件的话用 *）。如果您忘了，&lsquo;grep&rsquo;会一直等着，直到该程序被中断。如果您遇到了这样的情况，按 &lt;CTRL c&gt; ，然后再试。 <font color="#ffffff">www.bitscn.com</font></div>
<div>下面是一些有意思的命令行参数：</div>
<ul>
    <li>grep -i pattern files ：不区分大小写地搜索。默认情况区分大小写，</li>
    <li>grep -l pattern files ：只列出匹配的文件名，</li>
    <li>grep -L pattern files ：列出不匹配的文件名，</li>
    <li>grep -w pattern files ：只匹配整个单词，而不是字符串的一部分（如匹配&lsquo;magic&rsquo;，而不是&lsquo;magical&rsquo;），</li>
    <li>grep -C number pattern files ：匹配的上下文分别显示[number]行，</li>
    <li>grep pattern1 | pattern2 files ：显示匹配 pattern1 或 pattern2 的行，</li>
    <li>grep pattern1 files | grep pattern2 ：显示既匹配 pattern1 又匹配 pattern2 的行。</li>
</ul>
<div>这里还有些用于搜索的特殊符号：</div>
<ul>
    <li>\&lt; 和 \&gt; 分别标注单词的开始与结尾。<br />
    例如：
    <ul>
        <li>grep man * 会匹配 &lsquo;Batman&rsquo;、&lsquo;manic&rsquo;、&lsquo;man&rsquo;等，</li>
        <li>grep '\&lt;man' * 匹配&lsquo;manic&rsquo;和&lsquo;man&rsquo;，但不是&lsquo;Batman&rsquo;，</li>
        <li>grep '\&lt;man\&gt;' 只匹配&lsquo;man&rsquo;，而不是&lsquo;Batman&rsquo;或&lsquo;manic&rsquo;等其他的字符串。</li>
    </ul>
    </li>
    <li>'^'：指匹配的字符串在行首，</li>
    <li>'$'：指匹配的字符串在行尾，</li>
    <li>如果您不习惯命令行参数，可以试试图形界面的&lsquo;grep&rsquo;，如 reXgrep 。这个软件提供 AND、OR、NOT 等语法，还有漂亮的按钮 :-) 。如果您只是需要更清楚的输出，不妨试试 fungrep 。</li>
</ul>
<p style="text-indent: 2em"><br />
.grep&nbsp;搜索字符串<br />
命令格式:<br />
grep&nbsp;s<u>tr</u>ing&nbsp;filename<br />
寻找字串的方法很多，比如说我想找所有以M开头的行.此时必须引进pattern的观<br />
念.以下是一些简单的□例，以及说明：<br />
^M&nbsp;以M开头的行，^表示开始的意思<br />
M$&nbsp;以M结尾的行，$表示结束的意思<br />
^[0-9]&nbsp;以数字开始的行，[]内可列举字母<br />
^[124ab]&nbsp;以1,2,4,a,或b开头的行<br />
^b.503&nbsp;句点表示任一字母<br />
*&nbsp;星号表示0个以上的字母(可以没有)<br />
+&nbsp;加号表示1个以上的字母<br />
\.&nbsp;斜线可以去掉特殊意义<br />
&lt;eg&gt;&nbsp;<u>cat</u>&nbsp;passwd&nbsp;|&nbsp;grep&nbsp;^b&nbsp;列出大学部有申请帐号者名单<br />
cat&nbsp;passwd&nbsp;|&nbsp;grep&nbsp;^s&nbsp;列出交换学生申请帐号者名单<br />
cat&nbsp;passwd&nbsp;|&nbsp;grep&nbsp;'^b.503'&nbsp;列出电机系各年级...<br />
grep&nbsp;'^\.'&nbsp;myfile.txt&nbsp;列出所有以句点开头的行<br />
<!-- 正文end --></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em">~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</p>
<p style="text-indent: 2em">1. grep简介</p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em">grep （global search regular <u>expr</u>ession(RE) and print out the line,全面搜索正则表达式并把行打印出来）是一种强大的文本搜索工具，它能使用正则表达式搜索文本，并把匹配的行打印出来。Unix的grep家族包 括grep、<u>egrep</u>和<u>fgrep</u>。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展，支持更多的re元字符， fgrep就是fixed grep或fast grep，它们把所有的字母都看作单词，也就是说，正则表达式中的元字符表示回其自身的字面意义，不再特殊。linux使用GNU版本的grep。它功能 更强，可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。</p>
<p style="text-indent: 2em">grep的工作方式是这样的，它在一个或多个文件中搜索字符串模板。如果模板包括空格，则必须被引用，模板后的所有字符串被看作文件名。搜索的结果被送到屏幕，不影响原文件内容。</p>
<p style="text-indent: 2em">grep可用于shell脚本，因为grep通过返回一个状态值来说明搜索的状态，如果模板搜索成功，则返回0，如果搜索不成功，则返回1，如果搜索的文件不存在，则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。 <br />
&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. grep正则表达式元字符集（基本集）</p>
<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em">^</p>
<p style="text-indent: 2em">锚定行的开始 如：'^grep'匹配所有以grep开头的行。</p>
<p style="text-indent: 2em">$</p>
<p style="text-indent: 2em">锚定行的结束 如：'grep$'匹配所有以grep结尾的行。</p>
<p style="text-indent: 2em">匹配一个非换行符的字符 如：'gr.p'匹配gr后接一个任意字符，然后是p。</p>
<p style="text-indent: 2em">*</p>
<p style="text-indent: 2em">匹配零个或多个先前字符 如：'*grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。</p>
<p style="text-indent: 2em">[]</p>
<p style="text-indent: 2em">匹配一个指定范围内的字符，如'[Gg]rep'匹配Grep和grep。</p>
<p style="text-indent: 2em">[^]</p>
<p style="text-indent: 2em">匹配一个不在指定范围内的字符，如：'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头，紧跟rep的行。</p>
<p style="text-indent: 2em">\(..\)</p>
<p style="text-indent: 2em">标记匹配字符，如'\(love\)'，love被标记为1。</p>
<p style="text-indent: 2em">\&lt;</p>
<p style="text-indent: 2em">锚定单词的开始，如:'\</p>
<p style="text-indent: 2em">\&gt;</p>
<p style="text-indent: 2em">锚定单词的结束，如'grep\&gt;'匹配包含以grep结尾的单词的行。</p>
<p style="text-indent: 2em">x\{m\}</p>
<p style="text-indent: 2em">重复字符x，m次，如：'0\{5\}'匹配包含5个o的行。</p>
<p style="text-indent: 2em">x\{m,\}</p>
<p style="text-indent: 2em">重复字符x,至少m次，如：'o\{5,\}'匹配至少有5个o的行。</p>
<p style="text-indent: 2em">x\{m,n\}</p>
<p style="text-indent: 2em">重复字符x，至少m次，不多于n次，如：'o\{5,10\}'匹配5--10个o的行。</p>
<p style="text-indent: 2em">\w</p>
<p style="text-indent: 2em">匹配文字和数字字符，也就是[A-Za-z0-9]，如：'G\w*p'匹配以G后跟零个或多个文字或数字字符，然后是p。</p>
<p style="text-indent: 2em">\W</p>
<p style="text-indent: 2em">\w的反置形式，匹配一个或多个非单词字符，如点号句号等。</p>
<p style="text-indent: 2em">\b</p>
<p style="text-indent: 2em">单词锁定符，如: '\bgrepb\'只匹配grep。</p>
<p style="text-indent: 2em">3. 用于egrep和 grep -E的元字符扩展集</p>
<p style="text-indent: 2em">+</p>
<p style="text-indent: 2em">匹配一个或多个先前的字符。如：'[a-z]+able'，匹配一个或多个小写字母后跟able的串，如loveable,enable,disable等。</p>
<p style="text-indent: 2em">?</p>
<p style="text-indent: 2em">匹配零个或多个先前的字符。如：'gr?p'匹配gr后跟一个或没有字符，然后是p的行。</p>
<p style="text-indent: 2em">a|b|c</p>
<p style="text-indent: 2em">匹配a或b或c。如：grep|<u>sed</u>匹配grep或sed</p>
<p style="text-indent: 2em">()</p>
<p style="text-indent: 2em">分组符号，如：love(able|rs)ov+匹配loveable或lovers，匹配一个或多个ov。</p>
<p style="text-indent: 2em">x{m},x{m,},x{m,n}</p>
<p style="text-indent: 2em">作用同x\{m\},x\{m,\},x\{m,n\}</p>
<p style="text-indent: 2em">4. POSIX字符类</p>
<p style="text-indent: 2em">为了在不同国家的字符编码中保持一至，POSIX(The Portable Operating System Interface)增加了特殊的字符类，如[:a<u>ln</u>um:]是A-Za-z0-9的另一个写法。要把它们放到[]号内才能成为正则表达式，如[A- Za-z0-9]或[[:alnum:]]。在linux下的grep除fgrep外，都支持POSIX的字符类。</p>
<p style="text-indent: 2em">[:alnum:]</p>
<p style="text-indent: 2em">文字数字字符</p>
<p style="text-indent: 2em">[:alpha:]</p>
<p style="text-indent: 2em">文字字符</p>
<p style="text-indent: 2em">[:di<u>git</u>:]</p>
<p style="text-indent: 2em">数字字符</p>
<p style="text-indent: 2em">[:graph:]</p>
<p style="text-indent: 2em">非空字符（非空格、控制字符）</p>
<p style="text-indent: 2em">[:lower:]</p>
<p style="text-indent: 2em">小写字符</p>
<p style="text-indent: 2em">[:cntrl:]</p>
<p style="text-indent: 2em">控制字符</p>
<p style="text-indent: 2em">[:print:]</p>
<p style="text-indent: 2em">非空字符（包括空格）</p>
<p style="text-indent: 2em">[:pu<u>nc</u>t:]</p>
<p style="text-indent: 2em">标点符号</p>
<p style="text-indent: 2em">[:space:]</p>
<p style="text-indent: 2em">所有空白字符（新行，空格，制表符）</p>
<p style="text-indent: 2em">[:upper:]</p>
<p style="text-indent: 2em">大写字符</p>
<p style="text-indent: 2em">[:xdigit:]</p>
<p style="text-indent: 2em">十六进制数字（0-9，a-f，A-F）</p>
<p style="text-indent: 2em">5. Grep命令选项</p>
<p style="text-indent: 2em">-?</p>
<p style="text-indent: 2em">同时显示匹配行上下的？行，如：grep -2 pattern filename同时显示匹配行的上下2行。</p>
<p style="text-indent: 2em">-b，--byte-offset</p>
<p style="text-indent: 2em">打印匹配行前面打印该行所在的块号码。</p>
<p style="text-indent: 2em">-c,--count</p>
<p style="text-indent: 2em">只打印匹配的行数，不显示匹配的内容。</p>
<p style="text-indent: 2em">-f File，--file=File</p>
<p style="text-indent: 2em">从文件中提取模板。空文件中包含0个模板，所以什么都不匹配。</p>
<p style="text-indent: 2em">-h，--no-filename</p>
<p style="text-indent: 2em">当搜索多个文件时，不显示匹配文件名前缀。</p>
<p style="text-indent: 2em">-i，--ignore-case</p>
<p style="text-indent: 2em">忽略大小写差别。</p>
<p style="text-indent: 2em">-q，--quiet</p>
<p style="text-indent: 2em">取消显示，只返回退出状态。0则表示找到了匹配的行。</p>
<p style="text-indent: 2em">-l，--files-with-matches</p>
<p style="text-indent: 2em">打印匹配模板的文件清单。</p>
<p style="text-indent: 2em">-L，--files-without-match</p>
<p style="text-indent: 2em">打印不匹配模板的文件清单。</p>
<p style="text-indent: 2em">-n，--line-number</p>
<p style="text-indent: 2em">在匹配的行前面打印行号。</p>
<p style="text-indent: 2em">-s，--silent</p>
<p style="text-indent: 2em">不显示关于不存在或者无法读取文件的错误信息。</p>
<p style="text-indent: 2em">-v，--revert-match</p>
<p style="text-indent: 2em">反检索，只显示不匹配的行。</p>
<p style="text-indent: 2em">-w，--word-regexp</p>
<p style="text-indent: 2em">如果被\&lt;和\&gt;引用，就把表达式做为一个单词搜索。</p>
<p style="text-indent: 2em">-V，--version</p>
<p style="text-indent: 2em">显示软件版本信息。</p>
<p style="text-indent: 2em">6. 实例</p>
<p style="text-indent: 2em">要用好grep这个工具，其实就是要写好正则表达式，所以这里不对grep的所有功能进行实例讲解，只列几个例子，讲解一个正则表达式的写法。</p>
<p style="text-indent: 2em">$ ls -l | grep '^a'</p>
<p style="text-indent: 2em">通过管道过滤ls -l输出的内容，只显示以a开头的行。</p>
<p style="text-indent: 2em">$ grep 'test' d*</p>
<p style="text-indent: 2em">显示所有以d开头的文件中包含test的行。</p>
<p style="text-indent: 2em">$ grep 'test' aa bb cc</p>
<p style="text-indent: 2em">显示在aa，bb，cc文件中匹配test的行。</p>
<p style="text-indent: 2em">$ grep '[a-z]\{5\}' aa</p>
<p style="text-indent: 2em">显示所有包含每个字符串至少有5个连续小写字符的字符串的行。</p>
<p style="text-indent: 2em">$ grep 'w\(es\)t.*\1' aa</p>
<p>如果west被匹配，则es就被存储到内存中，并标记为1，然后搜索任意个字符（.*），这些字符后面紧跟着另外一个es（\1），找到就显示该行。如果用egrep或grep -E，就不用&quot;\&quot;号进行转义，直接写成'w(es)t.*\1'就可以了。</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-560-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-42-1.html">命令</category>
			<pubDate>2011-07-19 15:27</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-559-1.html</guid>
			<title>grep 参数使用和实例</title>
			<author>admin</author>
			<description><![CDATA[<div>一、grep 参数使用</div>
<div>Gun grep&nbsp;&nbsp; 选项</div>
<div>-b&nbsp;&nbsp; 在搜索到的行的前面打印该行所在的块号码。</div>
<div>-c&nbsp;&nbsp; 只显示有多少行匹配 ，而不具体显示匹配的行</div>
<div>-h&nbsp;&nbsp; 不显示文件名</div>
<div>-i&nbsp;&nbsp;&nbsp; 在字符串比较的时候忽略大小写</div>
<div>-l&nbsp;&nbsp;&nbsp; 只显示包含匹配模板的行的文件名清单，不同项目之间用换行符分隔</div>
<div>-L&nbsp;&nbsp; 打印不匹配模板的文件名清单</div>
<div>-n&nbsp;&nbsp; 在每一行前面打印该行在文件中的行数</div>
<div>-s&nbsp;&nbsp; 静默工作，除非出现错误信息否则不打印任何信息，这个功能在检测退出状态的时候有用</div>
<div>-v&nbsp;&nbsp; 反检索，只显示不匹配的行</div>
<div>-w&nbsp;</div>
<div>-Ax&nbsp; 在匹配指定行打印完毕后，再打印x行(向原文件匹配行下x行)</div>
<div>-By&nbsp; 在匹配指定行前面打印y行(在原文件匹配行上面打印y行)</div>
<div>-Cz&nbsp; 在匹配行前后打印z行&nbsp;&nbsp;(在原文件匹配行上下打印z行)</div>
<div>-b&nbsp;&nbsp;&nbsp; 在每一行前面打印字符偏移量</div>
<div>-f&nbsp; file&nbsp;&nbsp; 从文件file中提取模板。空文件中包含0个模板</div>
<div>-q&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取消标准输出，跟-n功能是一样的</div>
<div>-s&nbsp;&nbsp;&nbsp;&nbsp; 不显示关于不存在或者无法读文件的错误信息</div>
<div>-w&nbsp;&nbsp;&nbsp;只打印以单词形式匹配模板的行，模板可以是包含数字、字符和下划线的字符串</div>
<div>-x&nbsp;&nbsp;&nbsp; 只打印整行匹配的行</div>
<div>-y&nbsp;&nbsp; 用法同-i</div>
<div>-U&nbsp;&nbsp;把文件作为二进制文件，这个选项只在MS－DOS和MS－Windows中被支持<font color="#ff0000" size="3">(这个参数没有明白，请过路高人指点，非常感谢)</font></div>
<div>-u 按照unix风格报告字符偏移量。只在-b选项同时被使用的时候才有效。这个选项只在MS－DOS和MS－Windows中被支持</div>
<div>&nbsp;</div>
<div><font color="#ff0000">grep &quot;$name&quot; file&nbsp; 把变量$name 的值作为模板，在文件中寻找匹配模板的行。注意，必须使用双引号</font></div>
<div>&nbsp;</div>
<div>重复作用的元字符， \{\}; 用来做标签的元字符，\(\); 用来锚定单词的元字符\&lt;\&gt;</div>
<div>&nbsp;</div>
<div>二、实例</div>
<div>数据文件</div>
<div>[root@future tmp]# cat newbo<br />
1&nbsp; aa<br />
2&nbsp; AA<br />
3&nbsp; Aa<br />
4<br />
5<br />
[root@future tmp]# cat bo <br />
1<br />
2<br />
sss&nbsp;&nbsp; bo-<br />
3<br />
4<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
6<br />
hello grep 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep -n &quot;&quot; bo<br />
1:1<br />
2:2<br />
3:sss&nbsp;&nbsp; bo-<br />
4:3<br />
5:4<br />
6:5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
7:6<br />
8:hello grep 5</div>
<div>&nbsp;</div>
<div>[root@future tmp]# grep -i &quot;a&quot; newbo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -i关闭大小写敏感<br />
1&nbsp; aa<br />
2&nbsp; AA<br />
3&nbsp; Aa</div>
<div>&nbsp;</div>
<div>[root@future tmp]# grep -l '2' *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -l 打印匹配的文件名，而不打印匹配的行<br />
bo<br />
newbo</div>
<div>&nbsp;</div>
<div>[root@future tmp]# grep -c 'a' newbo&nbsp;&nbsp;&nbsp;&nbsp; 打印有多少匹配行<br />
2<br />
[root@future tmp]# grep -c -i 'a' newbo<br />
3</div>
<div>&nbsp;</div>
<div>[root@future tmp]# grep -w 'shell' bo&nbsp;&nbsp; -w打印按照单词方式匹配模板的行，而不是作为单词的一部分匹配模板的行<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
[root@future tmp]# grep -w 'hell' bo<br />
[root@future tmp]#</div>
<div>&nbsp;</div>
<div>[root@future tmp]# grep -2 '3' newbo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上下各两行<br />
1&nbsp; aa<br />
2&nbsp; AA<br />
3&nbsp; Aa<br />
4<br />
5<br />
[root@future tmp]# grep -A2 '3' newbo&nbsp; 下两行<br />
3&nbsp; Aa<br />
4<br />
5<br />
[root@future tmp]# grep -B2 '3' newbo&nbsp;&nbsp; 上两行<br />
1&nbsp; aa<br />
2&nbsp; AA<br />
3&nbsp; Aa<br />
[root@future tmp]# grep -C2 '3' newbo&nbsp;&nbsp;&nbsp; 上下各两行<br />
1&nbsp; aa<br />
2&nbsp; AA<br />
3&nbsp; Aa<br />
4<br />
5<br />
[root@future tmp]#</div>
<div>&nbsp;</div>
<div><font color="#ff0000" size="3">[root@future tmp]# grep -b '' newbo&nbsp;&nbsp; 打印每一行前打印字符偏移量（不明白具体指的是什么感觉比较抽象，在次请高人指教）<br />
</font>0:1&nbsp; aa<br />
6:2&nbsp; AA<br />
12:3&nbsp; Aa<br />
18:4<br />
20:5</div>
<div>&nbsp;</div>
<div>[root@future tmp]# cat regular <br />
1<br />
2<br />
[root@future tmp]# grep -f regular newbo&nbsp;&nbsp;&nbsp;-f 是指从文件中读取模板&nbsp;<br />
1&nbsp; aa<br />
2&nbsp; AA<br />
[root@future tmp]#</div>
<div>&nbsp;</div>
<div>[root@future tmp]# grep '' *<br />
bo:1<br />
bo:2<br />
bo:sss&nbsp;&nbsp; bo-<br />
bo:3<br />
bo:4<br />
bo:5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
bo:6<br />
bo:hello grep 5<br />
newbo:1&nbsp; aa<br />
newbo:2&nbsp; AA<br />
newbo:3&nbsp; Aa<br />
newbo:4<br />
newbo:5<br />
regular:1<br />
regular:2<br />
[root@future tmp]# grep -h '' *&nbsp;&nbsp;&nbsp; -h 使得grep不打印头信息，这个例子中是不打印文件名<br />
1<br />
2<br />
sss&nbsp;&nbsp; bo-<br />
3<br />
4<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
6<br />
hello grep 5<br />
1&nbsp; aa<br />
2&nbsp; AA<br />
3&nbsp; Aa<br />
4<br />
5<br />
1<br />
2</div>
<div>&nbsp;</div>
<div>[root@future tmp]# grep -q '' &quot; newbo&nbsp;&nbsp; -q取消grep的所有输出，在只需要退出状态值的场合这个选项就显得非常有用<br />
[root@future tmp]# echo $?<br />
0<br />
[root@future tmp]#</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>数据文件</div>
<div>[root@future root]# cat bo<br />
1<br />
2<br />
sss&nbsp;&nbsp; bo-<br />
3<br />
4<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
6<br />
hello grep 5<br />
[root@future root]# cat nu<br />
1<br />
ss&nbsp;&nbsp; -bo<br />
2<br />
xx&nbsp;&nbsp;&nbsp; bo-<br />
2222222222<br />
3<br />
4</div>
<div>&nbsp;</div>
<div>[root@future root]# grep 2 * 在所有的文件中搜索&ldquo;2&rdquo;<br />
bo:2<br />
nu:2<br />
nu:2222222222</div>
<div>&nbsp;</div>
<div>[root@future root]# grep '^5' *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^锚定行的开始<br />
bo:5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep '5$' bo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $锚定行的结尾<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
hello grep 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep '5\..' bo&nbsp;&nbsp;&nbsp;&nbsp; 第一个字符是5，然后紧跟着一个. 尔后是一个任意字符<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5</div>
<div>如果点前面有一个反斜杠，则点就不再特殊，而是仅仅表示一个点。</div>
<div>&nbsp;</div>
<div>[root@future root]# grep &quot;^[23]&quot; bo&nbsp; 表示开头是以2或3开头的行<br />
2<br />
3</div>
<div>&nbsp;</div>
<div><font color="#ff0000">[root@future root]# grep [^0-9] bo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打印所有包含非数字字符的行<br />
</font>sss&nbsp;&nbsp; bo-<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
hello grep 5<br />
[root@future root]# grep '[^0-9]' bo<br />
sss&nbsp;&nbsp; bo-<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
hello grep 5<br />
[root@future root]# grep &quot;[^0-9]&quot; bo<br />
sss&nbsp;&nbsp; bo-<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
hello grep 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep &quot;^[^0-9]&quot; bo&nbsp;&nbsp;&nbsp; 打印所有不是以数字开头的行<br />
sss&nbsp;&nbsp; bo-<br />
hello grep 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep '[a-z]\{5\}' bo&nbsp;&nbsp; 打印每个字符串至少有5个连续小写字母的字符串的行<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
hello grep 5<br />
[root@future root]# grep '^[a-z]\{5\}' bo打印开头字符串至少有5个连续小写字母的字符串的行<br />
hello grep 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep '\(5\)\.[0-9].*\1 *\1' bo&nbsp; 打印第一个字符是5，紧跟着一个句点，然后是任意一个数字，<font color="#ff0000">然后是任意字符，<font color="#000000">然后是一个5，然后是一个任意个制表符，然后又是一个5。</font><br />
</font>5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep '\(5\)\.[0-9] \1 *\1' bo 之所以没有搜索到是因为没有&ldquo;.*&rdquo;任意字符<br />
[root@future root]# grep '\(5\)\.[0-9] \1 .*\1' bo<br />
[root@future root]# grep '\(5\)\.[0-9] .* \1 *\1' bo<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5</div>
<div><font color="#ff0000">\1 是一个引用，含义是正则表达式中第一个被\(和\)括起来的部分</font></div>
<div>&nbsp;</div>
<div>[root@future root]# grep '\&lt;hel' bo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 锚定单词的开头<br />
hello grep 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep '5\&gt;' bo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 锚定单词的结尾<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
hello grep 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep '\&lt;hel\&gt;' bo<br />
[root@future root]# grep '\&lt;hello\&gt;' bo&nbsp;&nbsp;&nbsp; 打印所有包含单词hello的行<br />
hello grep 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep 'hello' bo <br />
hello grep 5<br />
<font color="#ff0000">[root@future root]# grep '\hello\b' bo&nbsp;&nbsp; <font size="3">\b是单词分界符&nbsp; 没有理解这个参数请路过的高人注解<br />
</font></font>hello grep 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep '^h\w*\w' bo&nbsp;&nbsp; <font color="#ff0000" size="3">也没有理解\w参数，仍然请过路高人注解，万分感激！<br />
</font>hello grep 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep '\&lt;[a-z].*o\&gt;' bo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .* 代表任意字符<br />
sss&nbsp;&nbsp; bo-<br />
hello grep 5</div>
<div>&nbsp;</div>
<div><font color="#ff0000">[root@future root]# grep '\&lt;[a-z]\{4\}o\&gt;' bo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 重复4次，加上前面一次，共5次<br />
hello grep 5</font></div>
<div><br />
[root@future root]# grep '\&lt;[a-z]\{5\}o\&gt;' bo<br />
[root@future root]# grep '\&lt;[a-z]\{3,20\}o\&gt;' bo<br />
hello grep 5<br />
[root@future root]# grep '\&lt;[a-z]\{6,20\}o\&gt;' bo<br />
[root@future root]# grep '\&lt;[a-z]\{5,20\}o\&gt;' bo<br />
[root@future root]# <br />
[root@future root]# grep '\&lt;[a-z]\{4,20\}o\&gt;' bo&nbsp; 重复4次</div>
<div>hello grep 5</div>
<div>&nbsp;</div>
<div>[root@future root]# grep '\&lt;[a-z]\{3,5\}o\&gt;' bo&nbsp;&nbsp; <br />
hello grep 5<br />
[root@future root]# grep '\&lt;[a-z]\{5,6\}o\&gt;' bo</div>
<div>[root@future root]#</div>
<div>&nbsp;</div>
<div><font color="#ff0000">注：a\{x,y\}\&nbsp; 意义是重复a＋（x和y之间含x和y）</font></div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>[root@future root]# grep '2|3' bo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grep不支持扩展的正则表达式，竖线是用于表示&lsquo;或&rsquo;的扩展正则表达式元字符。所以没有输出。<br />
[root@future root]# grep '2\|3' bo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 加上反斜杠，这个字符就被翻译成扩展正则表达式。<br />
2<br />
3</div>
<div>[root@future root]# grep &quot;\(2\|3\)&quot; bo<br />
2<br />
3</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>[root@future root]# grep &quot;\(5\)\.8.*\1&quot; bo<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5</div>
<div>正则表达式5.8被匹配，模板5 就被存储到内存中的寄存器1内，这个正则表达式的含义是如果5.8被找到，标记并保存5，然后搜索任意个字符（.*）,尔后是一个\1代表5</div>
<div>[root@future root]# grep &quot;\(5\).*\1&quot; bo<br />
5.8 shell&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><font color="#0000ff">[root@test-linux tmp]# cat te<br />
adlkf adfkl aa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 566.5<br />
dfad 234.43 aaa<br />
234&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aaaa<br />
adf adfa adf adf 45.556&nbsp; aaaaa<br />
[root@test-linux tmp]#<br />
[root@test-linux tmp]#<br />
[root@test-linux tmp]#<br />
[root@test-linux tmp]# grep '\baaa\b' te&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \b 单词分界符<br />
dfad 234.43 aaa<br />
[root@test-linux tmp]#<br />
</font></div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><font color="#0000ff">[root@test-linux tmp]# cat te<br />
adlkf adfkl aa&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 566.5<br />
dfad. 234.43 aaa<br />
dfad . 234.43 aaa<br />
234&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aaaa<br />
adf adfa adf adf 45.556&nbsp; aaaaa<br />
[root@test-linux tmp]#<br />
[root@test-linux tmp]#<br />
[root@test-linux tmp]#<br />
[root@test-linux tmp]# grep '^d\w' te&nbsp;&nbsp; \w 字母数字字符[a-zA-Z0-9]&nbsp; \W 非字母数字字符<br />
dfad. 234.43 aaa<br />
dfad . 234.43 aaa<br />
[root@test-linux tmp]#<br />
</font></div>]]></description>
			<link>http://meisw.wdlinux.cn//show-559-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-42-1.html">命令</category>
			<pubDate>2011-07-19 15:27</pubDate>
		</item>
	</channel>
</rss>
