⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch06_04.htm

📁 unix基础教程
💻 HTM
字号:
<html><head><title>Examples of Searching (UNIX in a Nutshell: System V Edition)</title><link rel="stylesheet" type="text/css" href="../style/style1.css" /><meta name="DC.Creator" content="Arnold Robbins" /><meta name="DC.Format" content="text/xml" scheme="MIME" /><meta name="DC.Language" content="en-US" /><meta name="DC.Publisher" content="O'Reilly &amp; Associates, Inc." /><meta name="DC.Source" scheme="ISBN" content="1-56592-427-4" /><meta name="DC.Subject.Keyword" content="stuff" /><meta name="DC.Title" content="UNIX in a Nutshell: System V Edition" /><meta name="DC.Type" content="Text.Monograph" /></head><body bgcolor="#ffffff"><img src="gifs/smbanner.gif" usemap="#banner-map" border="0" alt="Book Home" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Book Title" /><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch06_03.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228" /><td align="right" valign="top" width="228"><a href="ch07_01.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr></table></div><h2 class="sect1">6.4. Examples of Searching</h2><p>When used with <tt class="literal">grep</tt> or <tt class="literal">egrep</tt>, regular expressions should be surrounded by quotes.  (If the pattern contains a <tt class="literal">$</tt>, you must use single quotes; e.g.,<tt class="literal">'</tt><em class="emphasis">pattern</em><tt class="literal">'</tt>.)When used with <tt class="literal">ed</tt>, <tt class="literal">ex</tt>, <tt class="literal">sed</tt>,and <tt class="literal">awk</tt>,regular expressions are usually surrounded by <tt class="literal">/</tt>, although(except for <tt class="literal">awk</tt>) anydelimiter works. The following tables show some example patterns.</p><div class="sect2"><h3 class="sect2">6.4.1. General patterns</h3><table border="1" cellpadding="3"><tr><th><em class="emphasis">Pattern</em></th><th><em class="emphasis">What Does It Match?</em></th></tr><tr><td><tt class="literal">bag</tt></td><td>The string <em class="emphasis">bag</em>.</td></tr><tr><td><tt class="literal">^bag</tt></td><td><em class="emphasis">bag</em> at the beginning of the line.</td></tr><tr><td><tt class="literal">bag$</tt></td><td><em class="emphasis">bag</em> at the end of the line.</td></tr><tr><td><tt class="literal">^bag$</tt></td><td><em class="emphasis">bag</em> as the only word on the line.</td></tr><tr><td><tt class="literal">[Bb]ag</tt></td><td><em class="emphasis">Bag</em> or <em class="emphasis">bag</em>. </td></tr><tr><td><tt class="literal">b[aeiou]g</tt></td><td>Second letter is a vowel.</td></tr><tr><td><tt class="literal">b[^aeiou]g</tt></td><td><p>Second letter is a consonant (or uppercase or symbol).</p></td></tr><tr><td><tt class="literal">b.g</tt></td><td><p>Second letter is any character.</p></td></tr><tr><td><tt class="literal">^...$</tt></td><td><p>Any line containing exactly three characters.</p></td></tr><tr><td><tt class="literal">^\.</tt></td><td><p>Any line that begins with a dot.</p></td></tr><tr><td><tt class="literal">^\.[a-z][a-z]</tt></td><td><p>Same, followed by two lowercase letters (e.g.,<tt class="literal">troff</tt> requests).</p></td></tr><tr><td><tt class="literal">^\.[a-z]\{2\}</tt></td><td><p>Same as previous;<tt class="literal">ed</tt>,<tt class="literal">grep</tt>, and <tt class="literal">sed</tt> only.</p></td></tr><tr><td><tt class="literal">^[^.]</tt></td><td><p>Any line that doesn't begin with a dot.</p></td></tr><tr><td><tt class="literal">bugs*</tt></td><td><p><em class="emphasis">bug</em>, <em class="emphasis">bugs</em>, <em class="emphasis">bugss</em>, etc.</p></td></tr><tr><td><tt class="literal">"word"</tt></td><td><p>A word in quotes.</p></td></tr><tr><td><tt class="literal">"*word"*</tt></td><td><p>A word, with or without quotes.</p></td></tr><tr><td><tt class="literal">[A-Z][A-Z]*</tt></td><td><p>One or more uppercase letters.</p></td></tr><tr><td><tt class="literal">[A-Z]+</tt></td><td><p>Same; <tt class="literal">egrep</tt> or <tt class="literal">awk</tt> only.</p></td></tr><tr><td><tt class="literal">[[:upper:]]+</tt></td><td><p>Same; POSIX <tt class="literal">egrep</tt> or <tt class="literal">awk</tt>.</p></td></tr><tr><td><tt class="literal">[A-Z].*</tt></td><td><p>An uppercase letter, followed by zero or more characters.</p></td></tr><tr><td><tt class="literal">[A-Z]*</tt></td><td><p>Zero or more uppercase letters.</p></td></tr><tr><td><tt class="literal">[a-zA-Z]</tt></td><td>Any letter.</td></tr><tr><td><tt class="literal">[^0-9A-Za-z]</tt></td><td><p>Any symbol or space (not a letter or a number).</p></td></tr><tr><td><tt class="literal">[^[:alnum:]]</tt></td><td><p>Same, using POSIX character class.</p></td></tr></table><p></div><div class="sect2"><h3 class="sect2">6.4.2. Egrep and awk patterns</h3><table border="1" cellpadding="3"><tr><th><em class="emphasis">egrep or awk Pattern</em></th><th><em class="emphasis">What Does It Match?</em></th></tr><tr><td><tt class="literal">[567]</tt></td><td>One of the numbers <em class="emphasis">5</em>, <em class="emphasis">6</em>, or <em class="emphasis">7</em>.</td></tr><tr><td><tt class="literal">five|six|seven</tt></td><td>One of the words <em class="emphasis">five</em>, <em class="emphasis">six</em>, or <em class="emphasis">seven</em>.</td></tr><tr><td><tt class="literal">80[2-4]?86</tt></td><td><p><em class="emphasis">8086</em>, <em class="emphasis">80286</em>, <em class="emphasis">80386</em>,or <em class="emphasis">80486</em>.</p></td></tr><tr><td><tt class="literal">80[2-4]?86|(Pentium(-II)?)</tt></td><td><p><em class="emphasis">8086</em>, <em class="emphasis">80286</em>, <em class="emphasis">80386</em>,<em class="emphasis">80486</em>,<em class="emphasis">Pentium</em>, or<em class="emphasis">Pentium-II</em>.</p></td></tr><tr><td><tt class="literal">compan(y|ies)</tt></td><td><em class="emphasis">company</em> or <em class="emphasis">companies</em>.</td></tr></table><p></div><div class="sect2"><h3 class="sect2">6.4.3. Ex and vi patterns</h3><table border="1" cellpadding="3"><tr><th><em class="emphasis">ex or vi Pattern</em></th><th><em class="emphasis">What Does It Match?</em></th></tr><tr><td><tt class="literal">\&lt;the</tt></td><td>Words like <em class="emphasis">theater</em> or <em class="emphasis">the</em>.</td></tr><tr><td><tt class="literal">the\&gt;</tt></td><td>Words like <em class="emphasis">breathe</em> or <em class="emphasis">the</em>.</td></tr><tr><td><tt class="literal">\&lt;the\&gt;</tt></td><td>The word <em class="emphasis">the</em>.</td></tr></table><p></div><div class="sect2"><h3 class="sect2">6.4.4. Ed, sed and grep patterns</h3><table border="1" cellpadding="3"><tr><th><em class="emphasis">ed, sed or grep Pattern</em></th><th><em class="emphasis">What Does It Match?</em></th></tr><tr><td><tt class="literal">0\{5,\}</tt></td><td><p>Five or more zeros in a row.</p></td></tr><tr><td><tt class="literal">[0-9]\{3\}-[0-9]\{2\}-[0-9]\{4\}</tt></td><td><p>U.S. Social Security number (<em class="emphasis">nnn</em>-<em class="emphasis">nn</em>-<em class="emphasis">nnnn</em>).</p></td></tr><tr><td><tt class="literal">\(why\).*\1</tt></td><td><p>A line with two occurrences of <em class="emphasis">why</em>.</p></td></tr><tr><td><tt class="literal">\([[:alpha:]_][[:alnum:]_.]*\) = \1;</tt></td><td><p>C/C++ simple assignment statements.</p></td></tr></table><p></div><a name="unut-ch-6-sect-4.1" /><div class="sect2"><h3 class="sect2">6.4.5. Examples of Searching and Replacing</h3><p><a name="IXT-6-123115" /><a name="IXT-6-123116" /><a name="IXT-6-123117" /><a name="IXT-6-123118" />The examples in <a href="ch06_04.htm#unut-ch-6-tab-3">Table 6-6</a> show the metacharactersavailable to <tt class="literal">sed</tt> or <tt class="literal">ex</tt>.Note that <tt class="literal">ex</tt> commands begin with a colon.A space is marked by a <img src="figs/squ.gif" alt="Figure " />; a tab is marked by a <em class="emphasis">tab</em>.</p><a name="unut-ch-6-tab-3" /><h4 class="objtitle">Table 6-6. Searching and Replacing</h4><table border="1" cellpadding="3"><tr><th><em class="emphasis">Command</em></th><th><em class="emphasis">Result</em></th></tr><tr><td><tt class="literal">s/.*/( &amp; )/</tt></td><td><p>Redo the entire line, but add parentheses.</p></td></tr><tr><td><tt class="literal">s/.*/mv &amp; &amp;.old/</tt></td><td><p>Change a wordlist (one word per line) into <tt class="literal">mv</tt> commands.</p></td></tr><tr><td><tt class="literal">/^$/d</tt></td><td><p>Delete blank lines.</p></td></tr><tr><td><tt class="literal">:g/^$/d</tt></td><td><p>Same as previous, in <tt class="literal">ex</tt> editor.</p></td></tr><tr><td><tt class="literal">/^[<img src="figs/squ.gif" alt="Figure " /></tt><em class="emphasis">tab</em><tt class="literal">]*$/d</tt></td><td><p>Delete blank lines, plus lines containing only spaces or tabs.</p></td></tr><tr><td><tt class="literal">:g/^[<img src="figs/squ.gif" alt="Figure " /></tt><em class="emphasis">tab</em><tt class="literal">]*$/d</tt></td><td><p>Same as previous, in <tt class="literal">ex</tt> editor.</p></td></tr><tr><td><tt class="literal">s/<img src="figs/squ.gif" alt="Figure " /><img src="figs/squ.gif" alt="Figure " />*/<img src="figs/squ.gif" alt="Figure " />/g</tt></td><td><p>Turn one or more spaces into one space.</p></td></tr><tr><td><tt class="literal">:%s/<img src="figs/squ.gif" alt="Figure " /><img src="figs/squ.gif" alt="Figure " />*/<img src="figs/squ.gif" alt="Figure " />/g</tt></td><td><p>Same as previous, in <tt class="literal">ex</tt> editor.</p></td></tr><tr><td><tt class="literal">:s/[0-9]/Item &amp;:/</tt></td><td><p>Turn a number into an item label (on the current line).</p></td></tr><tr><td><tt class="literal">:s</tt></td><td><p>Repeat the substitution on the first occurrence.</p></td></tr><tr><td><tt class="literal">:&amp;</tt></td><td><p>Same as previous.</p></td></tr><tr><td><tt class="literal">:sg</tt></td><td><p>Same, but for all occurrences on the line.</p></td></tr><tr><td><tt class="literal">:&amp;g</tt></td><td><p>Same as previous.</p></td></tr><tr><td><tt class="literal">:%&amp;g</tt></td><td><p>Repeat the substitution globally (i.e., on all lines).</p></td></tr><tr><td><tt class="literal">:.,$s/Fortran/\U&amp;/g</tt></td><td><p>On current line to last line, change word to uppercase.</p></td></tr><tr><td><tt class="literal">:%s/.*/\L&amp;/</tt></td><td><p>Lowercase entire file.</p></td></tr><tr><td><tt class="literal">:s/\&lt;./\u&amp;/g</tt></td><td><p>Uppercase first letter of each word on current line.(Useful for titles.)</p></td></tr><tr><td><tt class="literal">:%s/yes/No/g</tt></td><td><p>Globally change a word to <em class="emphasis">No</em>.</p></td></tr><tr><td><tt class="literal">:%s/Yes/~/g</tt></td><td><p>Globally change a different word to <em class="emphasis">No</em> (previous replacement).</p></td></tr></table><p><p>Finally, some <tt class="literal">sed</tt> examples for transposing words.  A simpletransposition of two words might look like this:</p><blockquote><pre class="code">s/die or do/do or die/		 <i class="lineannotation">Transpose words</i></pre></blockquote><p>The real trick is to use hold buffers to transpose variablepatterns.  For example:</p><blockquote><pre class="code">s/\([Dd]ie\) or \([Dd]o\)/\2 or \1/	 <i class="lineannotation">Transpose, using hold buffers</i></pre></blockquote><p><a name="IXT-6-123119" /><a name="IXT-6-123120" /><a name="IXT-6-123121" /></p></div><hr width="684" align="left" /><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch06_03.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228"><a href="index.htm"><img src="../gifs/txthome.gif" alt="Home" border="0" /></a></td><td align="right" valign="top" width="228"><a href="ch07_01.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr><tr><td align="left" valign="top" width="228">6.3. Metacharacters</td><td align="center" valign="top" width="228"><a href="index/index.htm"><img src="../gifs/index.gif" alt="Book Index" border="0" /></a></td><td align="right" valign="top" width="228">7. The Emacs Editor</td></tr></table></div><hr width="684" align="left" /><img src="../gifs/navbar.gif" usemap="#library-map" border="0" alt="Library Navigation Links" /><p><p><font size="-1"><a href="copyrght.htm">Copyright &copy; 2003</a> O'Reilly &amp; Associates. All rights reserved.</font></p><map name="library-map"><area shape="rect" coords="1,0,88,96" href="../index.htm"><area shape="rect" coords="90,0,165,96" href="../upt/index.htm"><area shape="rect" coords="168,1,253,107" href="../mac/index.htm"><area shape="rect" coords="255,0,335,97" href="../korn/index.htm"><area shape="rect" coords="337,0,415,109" href="../unixnut/index.htm"><area shape="rect" coords="417,0,512,122" href="../sedawk/index.htm"><area shape="rect" coords="514,0,605,105" href="../lunix/index.htm"><area shape="rect" coords="611,2,694,121" href="../vi/index.htm"></map></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -