<?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>waimv.com &#187; sed</title>
	<atom:link href="http://www.waimv.com/tag/sed/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.waimv.com</link>
	<description></description>
	<lastBuildDate>Fri, 09 Nov 2018 10:41:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>linux sed 命令</title>
		<link>http://www.waimv.com/linux/205/</link>
		<comments>http://www.waimv.com/linux/205/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 03:24:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[sed]]></category>

		<guid isPermaLink="false">http://www.szpian.com/?p=205</guid>
		<description><![CDATA[例子 echo reti/hl/urn hello &#124; sed &#8216;s/\/hl\//ttttt/g&#8217; 1. Sed简介 sed是一种在线编辑器，它一次处理一行内容。处理时，把当前处理的行存储在临时缓冲区中，称为“模式空间”（pattern space），接着用sed命令处理缓冲区中的内容，处理完成后，把缓冲区的内容送往屏幕。接着处理下一行，这样不断重复，直到文件末尾。文件内容并没有 改变，除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件；简化对文件的反复操作；编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。 2. 定址 可以通过定址来定位你所希望编辑的行，该地址用数字构成，用逗号分隔的两个行数表示以这两行为起止的行的范围（包括行数表示的那两行）。如1，3表示1，2，3行，美元符号($)表示最后一行。范围可以通过数据，正则表达式或者二者结合的方式确定 。 3. Sed命令 调用sed命令有两种形式： sed [options] &#8216;command&#8217; file(s) sed [options] -f scriptfile file(s) a\ ：在当前行后面加入一行文本。 b lable ：分支到脚本中带有标记的地方，如果分支不存在则分支到脚本的末尾。 c\ ：用新的文本改变本行的文本。 d ：从模板块（Pattern space）位置删除行。 D：删除模板块的第一行。 i\ ：在当前行上面插入文本。 h ：拷贝模板块的内容到内存中的缓冲区。 H ：追加模板块的内容到内存中的缓冲区 g ：获得内存缓冲区的内容，并替代当前模板块中的文本。 G ：获得内存缓冲区的内容，并追加到当前模板块文本的后面。 l ：列表不能打印字符的清单。 n ：读取下一个输入行，用下一个命令处理新的行而不是用第一个命令。 N [...]]]></description>
			<content:encoded><![CDATA[<p>例子 echo reti/hl/urn hello | sed &#8216;s/\/hl\//ttttt/g&#8217;</p>
<div id="_mcePaste">1. Sed简介</div>
<div id="_mcePaste">sed是一种在线编辑器，它一次处理一行内容。处理时，把当前处理的行存储在临时缓冲区中，称为“模式空间”（pattern space），接着用sed命令处理缓冲区中的内容，处理完成后，把缓冲区的内容送往屏幕。接着处理下一行，这样不断重复，直到文件末尾。文件内容并没有 改变，除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件；简化对文件的反复操作；编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。</div>
<div id="_mcePaste">2. 定址</div>
<div id="_mcePaste">可以通过定址来定位你所希望编辑的行，该地址用数字构成，用逗号分隔的两个行数表示以这两行为起止的行的范围（包括行数表示的那两行）。如1，3表示1，2，3行，美元符号($)表示最后一行。范围可以通过数据，正则表达式或者二者结合的方式确定 。</div>
<div id="_mcePaste">3. Sed命令</div>
<div id="_mcePaste">调用sed命令有两种形式：</div>
<div id="_mcePaste">sed [options] &#8216;command&#8217; file(s)</div>
<div id="_mcePaste">sed [options] -f scriptfile file(s)</div>
<div id="_mcePaste">a\ ：在当前行后面加入一行文本。</div>
<div id="_mcePaste">b lable ：分支到脚本中带有标记的地方，如果分支不存在则分支到脚本的末尾。</div>
<div id="_mcePaste">c\ ：用新的文本改变本行的文本。</div>
<div id="_mcePaste">d ：从模板块（Pattern space）位置删除行。</div>
<div id="_mcePaste">D：删除模板块的第一行。</div>
<div id="_mcePaste">i\ ：在当前行上面插入文本。</div>
<div id="_mcePaste">h ：拷贝模板块的内容到内存中的缓冲区。</div>
<div id="_mcePaste">H ：追加模板块的内容到内存中的缓冲区</div>
<div id="_mcePaste">g ：获得内存缓冲区的内容，并替代当前模板块中的文本。</div>
<div id="_mcePaste">G ：获得内存缓冲区的内容，并追加到当前模板块文本的后面。</div>
<div id="_mcePaste">l ：列表不能打印字符的清单。</div>
<div id="_mcePaste">n ：读取下一个输入行，用下一个命令处理新的行而不是用第一个命令。</div>
<div id="_mcePaste">N ：追加下一个输入行到模板块后面并在二者间嵌入一个新行，改变当前行号码。</div>
<div id="_mcePaste">p ：打印模板块的行。</div>
<div id="_mcePaste">P ：打印模板块的第一行。</div>
<div id="_mcePaste">q ：退出Sed。</div>
<div id="_mcePaste">r file ：从file中读行。</div>
<div id="_mcePaste">t label ：if分支，从最后一行开始，条件一旦满足或者T，t命令，将导致分支到带有标号的命令处，或者到脚本的末尾。</div>
<div id="_mcePaste">T label ：错误分支，从最后一行开始，一旦发生错误或者T，t命令，将导致分支到带有标号的命令处，或者到脚本的末尾。</div>
<div id="_mcePaste">w file ：写并追加模板块到file末尾。</div>
<div id="_mcePaste">W file ：写并追加模板块的第一行到file末尾。</div>
<div id="_mcePaste">! ：表示后面的命令对所有没有被选定的行发生作用。</div>
<div id="_mcePaste">s/re/string ：用string替换正则表达式re。</div>
<div id="_mcePaste">= ：打印当前行号码。</div>
<div id="_mcePaste"># ：把注释扩展到下一个换行符以前。</div>
<div id="_mcePaste">以下的是替换标记</div>
<div id="_mcePaste">g：表示行内全面替换。</div>
<div id="_mcePaste">p：表示打印行。</div>
<div id="_mcePaste">w：表示把行写入一个文件。</div>
<div id="_mcePaste">x：表示互换模板块中的文本和缓冲区中的文本。</div>
<div id="_mcePaste">y：表示把一个字符翻译为另外的字符（但是不用于正则表达式）</div>
<div id="_mcePaste">4. 选项</div>
<div id="_mcePaste">-e command, &#8211;expression=command</div>
<div id="_mcePaste">允许多台编辑。</div>
<div id="_mcePaste">-h, –help</div>
<div id="_mcePaste">打印帮助，并显示bug列表的地址。</div>
<div id="_mcePaste">-n, &#8211;quiet, –silent</div>
<div id="_mcePaste">取消默认输出。</div>
<div id="_mcePaste">-f, &#8211;filer=script-file</div>
<div id="_mcePaste">引导sed脚本文件名。</div>
<div id="_mcePaste">-V, –version</div>
<div id="_mcePaste">打印版本和版权信息。</div>
<div id="_mcePaste">5. 元字符集</div>
<div id="_mcePaste">^</div>
<div id="_mcePaste">锚定行的开始 如：/^sed/匹配所有以sed开头的行。</div>
<div id="_mcePaste">$</div>
<div id="_mcePaste">锚定行的结束 如：/sed$/匹配所有以sed结尾的行。</div>
<div id="_mcePaste">.</div>
<div id="_mcePaste">匹配一个非换行符的字符 如：/s.d/匹配s后接一个任意字符，然后是d。</div>
<div id="_mcePaste">*</div>
<div id="_mcePaste">匹配零或多个字符 如：/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。</div>
<div id="_mcePaste">[]</div>
<div id="_mcePaste">匹配一个指定范围内的字符，如/[Ss]ed/匹配sed和Sed。</div>
<div id="_mcePaste">[^]</div>
<div id="_mcePaste">匹配一个不在指定范围内的字符，如：/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头，紧跟ed的行。</div>
<div id="_mcePaste">\(..\)</div>
<div id="_mcePaste">保存匹配的字符，如s/\(love\)able/\1rs，loveable被替换成lovers。</div>
<div id="_mcePaste">&amp;</div>
<div id="_mcePaste">保存搜索字符用来替换其他字符，如s/love/**&amp;**/，love这成**love**。</div>
<div id="_mcePaste">\&lt;</div>
<div id="_mcePaste">锚定单词的开始，如:/\</div>
<div id="_mcePaste">\&gt;</div>
<div id="_mcePaste">锚定单词的结束，如/love\&amp;gt;/匹配包含以love结尾的单词的行。</div>
<div id="_mcePaste">x\{m\}</div>
<div id="_mcePaste">重复字符x，m次，如：/0\{5\}/匹配包含5个o的行。</div>
<div id="_mcePaste">x\{m,\}</div>
<div id="_mcePaste">重复字符x,至少m次，如：/o\{5,\}/匹配至少有5个o的行。</div>
<div id="_mcePaste">x\{m,n\}</div>
<div id="_mcePaste">重复字符x，至少m次，不多于n次，如：/o\{5,10\}/匹配5&#8211;10个o的行。</div>
<div id="_mcePaste">6. 实例</div>
<div id="_mcePaste">删除：d命令</div>
<div id="_mcePaste">$ sed &#8217;2d&#8217; example&#8212;&#8211;删除example文件的第二行。</div>
<div id="_mcePaste">$ sed &#8217;2,$d&#8217; example&#8212;&#8211;删除example文件的第二行到末尾所有行。</div>
<div id="_mcePaste">$ sed &#8216;$d&#8217; example&#8212;&#8211;删除example文件的最后一行。</div>
<div id="_mcePaste">$ sed &#8216;/test/&#8217;d example&#8212;&#8211;删除example文件所有包含test的行。</div>
<div id="_mcePaste">替换：s命令</div>
<div id="_mcePaste">$ sed &#8216;s/test/mytest/g&#8217; example&#8212;&#8211;在整行范围内把test替换为mytest。如果没有g标记，则只有每行第一个匹配的test被替换成mytest。</div>
<div id="_mcePaste">$ sed -n &#8216;s/^test/mytest/p&#8217; example&#8212;&#8211;(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说，如果某一行开头的test被替换成mytest，就打印它。</div>
<div id="_mcePaste">$ sed &#8216;s/^192.168.0.1/&amp;localhost/&#8217; example&#8212;&#8211;&amp;符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加 localhost，变成192.168.0.1localhost。</div>
<div id="_mcePaste">$ sed -n &#8216;s/\(love\)able/\1rs/p&#8217; example&#8212;&#8211;love被标记为1，所有loveable会被替换成lovers，而且替换的行会被打印出来。</div>
<div id="_mcePaste">$ sed &#8216;s#10#100#g&#8217; example&#8212;&#8211;不论什么字符，紧跟着s命令的都被认为是新的分隔符，所以，“#”在这里是分隔符，代替了默认的“/”分隔符。表示把所有10替换成100。</div>
<div id="_mcePaste">选定行的范围：逗号</div>
<div id="_mcePaste">$ sed -n &#8216;/test/,/check/p&#8217; example&#8212;&#8211;所有在模板test和check所确定的范围内的行都被打印。</div>
<div id="_mcePaste">$ sed -n &#8217;5,/^test/p&#8217; example&#8212;&#8211;打印从第五行开始到第一个包含以test开始的行之间的所有行。</div>
<div id="_mcePaste">$ sed &#8216;/test/,/check/s/$/sed test/&#8217; example&#8212;&#8211;对于模板test和west之间的行，每行的末尾用字符串sed test替换。</div>
<div id="_mcePaste">多点编辑：e命令</div>
<div id="_mcePaste">$ sed -e &#8217;1,5d&#8217; -e &#8216;s/test/check/&#8217; example&#8212;&#8211;(-e)选项允许在同一行里执行多条命令。如例子所示，第一条命令删除1至5行，第二条命令用check替换test。命令的执 行顺序对结果有影响。如果两个命令都是替换命令，那么第一个替换命令将影响第二个替换命令的结果。</div>
<div id="_mcePaste">$ sed &#8211;expression=&#8217;s/test/check/&#8217; &#8211;expression=&#8217;/love/d&#8217; example&#8212;&#8211;一个比-e更好的命令是&#8211;expression。它能给sed表达式赋值。</div>
<div id="_mcePaste">从文件读入：r命令</div>
<div id="_mcePaste">$ sed &#8216;/test/r file&#8217; example&#8212;&#8211;file里的内容被读进来，显示在与test匹配的行后面，如果匹配多行，则file的内容将显示在所有匹配行的下面。</div>
<div id="_mcePaste">写入文件：w命令</div>
<div id="_mcePaste">$ sed -n &#8216;/test/w file&#8217; example&#8212;&#8211;在example中所有包含test的行都被写入file里。</div>
<div id="_mcePaste">追加命令：a命令</div>
<div id="_mcePaste">$ sed &#8216;/^test/a\\&#8212;&amp;gt;this is a example&#8217; example&amp;lt;&#8212;&#8211;&#8217;this is a example&#8217;被追加到以test开头的行后面，sed要求命令a后面有一个反斜杠。</div>
<div id="_mcePaste">插入：i命令</div>
<div id="_mcePaste">$ sed &#8216;/test/i\\new line&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#8217; example</div>
<div id="_mcePaste">如果test被匹配，则把反斜杠后面的文本插入到匹配行的前面。</div>
<div id="_mcePaste">下一个：n命令</div>
<div id="_mcePaste">$ sed &#8216;/test/{ n; s/aa/bb/; }&#8217; example&#8212;&#8211;如果test被匹配，则移动到匹配行的下一行，替换这一行的aa，变为bb，并打印该行，然后继续。</div>
<div id="_mcePaste">变形：y命令</div>
<div id="_mcePaste">$ sed &#8217;1,10y/abcde/ABCDE/&#8217; example&#8212;&#8211;把1&#8211;10行内所有abcde转变为大写，注意，正则表达式元字符不能使用这个命令。</div>
<div id="_mcePaste">退出：q命令</div>
<div id="_mcePaste">$ sed &#8217;10q&#8217; example&#8212;&#8211;打印完第10行后，退出sed。</div>
<div id="_mcePaste">保持和获取：h命令和G命令</div>
<div id="_mcePaste">$ sed -e &#8216;/test/h&#8217; -e &#8216;$G example&#8212;&#8211;在sed处理文件的时候，每一行都被保存在一个叫模式空间的临时缓冲区中，除非行被删除或者输出被取消，否则所有被处理的行都将 打印在屏幕上。接着模式空间被清空，并存入新的一行等待处理。在这个例子里，匹配test的行被找到后，将存入模式空间，h命令将其复制并存入一个称为保 持缓存区的特殊缓冲区内。第二条语句的意思是，当到达最后一行后，G命令取出保持缓冲区的行，然后把它放回模式空间中，且追加到现在已经存在于模式空间中 的行的末尾。在这个例子中就是追加到最后一行。简单来说，任何包含test的行都被复制并追加到该文件的末尾。</div>
<div id="_mcePaste">保持和互换：h命令和x命令</div>
<div id="_mcePaste">$ sed -e &#8216;/test/h&#8217; -e &#8216;/check/x&#8217; example &#8212;&#8211;互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。</div>
<div id="_mcePaste">7. 脚本</div>
<div id="_mcePaste">Sed脚本是一个sed的命令清单，启动Sed时以-f选项引导脚本文件名。Sed对于脚本中输入的命令非常挑剔，在命令的末尾不能有任何空白或文本，如果在一行中有多个命令，要用分号分隔。以#开头的行为注释行，且不能跨行。</div>
<div id="_mcePaste">比如，如果要打印出含有字串”1024”的行，我就可能会用：</div>
<div id="_mcePaste">cat filename | sed –n ‘/1024/p’sed命令详解!!(要学习shell的 朋友要好好看看)</div>
<div id="_mcePaste">sed /^$/d filename</div>
<div id="_mcePaste">可以删除文件中的空行。</div>
<div id="_mcePaste">sed /^[[:space:]]*$/d filename</div>
<div id="_mcePaste">可以删除内容为多个空格/tab组成的行。</div>
<div id="_mcePaste">作者“For The Dream”</div>
<p>1. Sed简介sed是一种在线编辑器，它一次处理一行内容。处理时，把当前处理的行存储在临时缓冲区中，称为“模式空间”（pattern space），接着用sed命令处理缓冲区中的内容，处理完成后，把缓冲区的内容送往屏幕。接着处理下一行，这样不断重复，直到文件末尾。文件内容并没有 改变，除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件；简化对文件的反复操作；编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。2. 定址可以通过定址来定位你所希望编辑的行，该地址用数字构成，用逗号分隔的两个行数表示以这两行为起止的行的范围（包括行数表示的那两行）。如1，3表示1，2，3行，美元符号($)表示最后一行。范围可以通过数据，正则表达式或者二者结合的方式确定 。3. Sed命令调用sed命令有两种形式：sed [options] &#8216;command&#8217; file(s)sed [options] -f scriptfile file(s)<br />
a\ ：在当前行后面加入一行文本。b lable ：分支到脚本中带有标记的地方，如果分支不存在则分支到脚本的末尾。c\ ：用新的文本改变本行的文本。d ：从模板块（Pattern space）位置删除行。D：删除模板块的第一行。i\ ：在当前行上面插入文本。h ：拷贝模板块的内容到内存中的缓冲区。H ：追加模板块的内容到内存中的缓冲区g ：获得内存缓冲区的内容，并替代当前模板块中的文本。G ：获得内存缓冲区的内容，并追加到当前模板块文本的后面。l ：列表不能打印字符的清单。n ：读取下一个输入行，用下一个命令处理新的行而不是用第一个命令。N ：追加下一个输入行到模板块后面并在二者间嵌入一个新行，改变当前行号码。p ：打印模板块的行。P ：打印模板块的第一行。q ：退出Sed。r file ：从file中读行。t label ：if分支，从最后一行开始，条件一旦满足或者T，t命令，将导致分支到带有标号的命令处，或者到脚本的末尾。T label ：错误分支，从最后一行开始，一旦发生错误或者T，t命令，将导致分支到带有标号的命令处，或者到脚本的末尾。w file ：写并追加模板块到file末尾。W file ：写并追加模板块的第一行到file末尾。! ：表示后面的命令对所有没有被选定的行发生作用。s/re/string ：用string替换正则表达式re。= ：打印当前行号码。# ：把注释扩展到下一个换行符以前。<br />
以下的是替换标记g：表示行内全面替换。p：表示打印行。w：表示把行写入一个文件。x：表示互换模板块中的文本和缓冲区中的文本。y：表示把一个字符翻译为另外的字符（但是不用于正则表达式）<br />
4. 选项-e command, &#8211;expression=command      允许多台编辑。-h, –help      打印帮助，并显示bug列表的地址。-n, &#8211;quiet, –silent      取消默认输出。-f, &#8211;filer=script-file      引导sed脚本文件名。-V, –version      打印版本和版权信息。<br />
5. 元字符集 ^ 锚定行的开始 如：/^sed/匹配所有以sed开头的行。$ 锚定行的结束 如：/sed$/匹配所有以sed结尾的行。. 匹配一个非换行符的字符 如：/s.d/匹配s后接一个任意字符，然后是d。*  匹配零或多个字符 如：/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。[] 匹配一个指定范围内的字符，如/[Ss]ed/匹配sed和Sed。[^] 匹配一个不在指定范围内的字符，如：/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头，紧跟ed的行。\(..\) 保存匹配的字符，如s/\(love\)able/\1rs，loveable被替换成lovers。&amp; 保存搜索字符用来替换其他字符，如s/love/**&amp;**/，love这成**love**。\&lt; 锚定单词的开始，如:/\\&gt;  锚定单词的结束，如/love\&amp;gt;/匹配包含以love结尾的单词的行。x\{m\} 重复字符x，m次，如：/0\{5\}/匹配包含5个o的行。x\{m,\} 重复字符x,至少m次，如：/o\{5,\}/匹配至少有5个o的行。x\{m,n\} 重复字符x，至少m次，不多于n次，如：/o\{5,10\}/匹配5&#8211;10个o的行。<br />
6. 实例删除：d命令	$ sed &#8217;2d&#8217; example&#8212;&#8211;删除example文件的第二行。	$ sed &#8217;2,$d&#8217; example&#8212;&#8211;删除example文件的第二行到末尾所有行。	$ sed &#8216;$d&#8217; example&#8212;&#8211;删除example文件的最后一行。	$ sed &#8216;/test/&#8217;d example&#8212;&#8211;删除example文件所有包含test的行。替换：s命令	$ sed &#8216;s/test/mytest/g&#8217; example&#8212;&#8211;在整行范围内把test替换为mytest。如果没有g标记，则只有每行第一个匹配的test被替换成mytest。	$ sed -n &#8216;s/^test/mytest/p&#8217; example&#8212;&#8211;(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说，如果某一行开头的test被替换成mytest，就打印它。	$ sed &#8216;s/^192.168.0.1/&amp;localhost/&#8217; example&#8212;&#8211;&amp;符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加 localhost，变成192.168.0.1localhost。	$ sed -n &#8216;s/\(love\)able/\1rs/p&#8217; example&#8212;&#8211;love被标记为1，所有loveable会被替换成lovers，而且替换的行会被打印出来。	$ sed &#8216;s#10#100#g&#8217; example&#8212;&#8211;不论什么字符，紧跟着s命令的都被认为是新的分隔符，所以，“#”在这里是分隔符，代替了默认的“/”分隔符。表示把所有10替换成100。 选定行的范围：逗号	$ sed -n &#8216;/test/,/check/p&#8217; example&#8212;&#8211;所有在模板test和check所确定的范围内的行都被打印。	$ sed -n &#8217;5,/^test/p&#8217; example&#8212;&#8211;打印从第五行开始到第一个包含以test开始的行之间的所有行。	$ sed &#8216;/test/,/check/s/$/sed test/&#8217; example&#8212;&#8211;对于模板test和west之间的行，每行的末尾用字符串sed test替换。 多点编辑：e命令	$ sed -e &#8217;1,5d&#8217; -e &#8216;s/test/check/&#8217; example&#8212;&#8211;(-e)选项允许在同一行里执行多条命令。如例子所示，第一条命令删除1至5行，第二条命令用check替换test。命令的执 行顺序对结果有影响。如果两个命令都是替换命令，那么第一个替换命令将影响第二个替换命令的结果。	$ sed &#8211;expression=&#8217;s/test/check/&#8217; &#8211;expression=&#8217;/love/d&#8217; example&#8212;&#8211;一个比-e更好的命令是&#8211;expression。它能给sed表达式赋值。 从文件读入：r命令	$ sed &#8216;/test/r file&#8217; example&#8212;&#8211;file里的内容被读进来，显示在与test匹配的行后面，如果匹配多行，则file的内容将显示在所有匹配行的下面。 写入文件：w命令	$ sed -n &#8216;/test/w file&#8217; example&#8212;&#8211;在example中所有包含test的行都被写入file里。 追加命令：a命令 	$ sed &#8216;/^test/a\\&#8212;&amp;gt;this is a example&#8217; example&amp;lt;&#8212;&#8211;&#8217;this is a example&#8217;被追加到以test开头的行后面，sed要求命令a后面有一个反斜杠。 插入：i命令	$ sed &#8216;/test/i\\new line&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-&#8217; example	如果test被匹配，则把反斜杠后面的文本插入到匹配行的前面。 下一个：n命令 	$ sed &#8216;/test/{ n; s/aa/bb/; }&#8217; example&#8212;&#8211;如果test被匹配，则移动到匹配行的下一行，替换这一行的aa，变为bb，并打印该行，然后继续。 变形：y命令	$ sed &#8217;1,10y/abcde/ABCDE/&#8217; example&#8212;&#8211;把1&#8211;10行内所有abcde转变为大写，注意，正则表达式元字符不能使用这个命令。 退出：q命令	$ sed &#8217;10q&#8217; example&#8212;&#8211;打印完第10行后，退出sed。 保持和获取：h命令和G命令	$ sed -e &#8216;/test/h&#8217; -e &#8216;$G example&#8212;&#8211;在sed处理文件的时候，每一行都被保存在一个叫模式空间的临时缓冲区中，除非行被删除或者输出被取消，否则所有被处理的行都将 打印在屏幕上。接着模式空间被清空，并存入新的一行等待处理。在这个例子里，匹配test的行被找到后，将存入模式空间，h命令将其复制并存入一个称为保 持缓存区的特殊缓冲区内。第二条语句的意思是，当到达最后一行后，G命令取出保持缓冲区的行，然后把它放回模式空间中，且追加到现在已经存在于模式空间中 的行的末尾。在这个例子中就是追加到最后一行。简单来说，任何包含test的行都被复制并追加到该文件的末尾。 保持和互换：h命令和x命令 	$ sed -e &#8216;/test/h&#8217; -e &#8216;/check/x&#8217; example &#8212;&#8211;互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。<br />
7. 脚本  Sed脚本是一个sed的命令清单，启动Sed时以-f选项引导脚本文件名。Sed对于脚本中输入的命令非常挑剔，在命令的末尾不能有任何空白或文本，如果在一行中有多个命令，要用分号分隔。以#开头的行为注释行，且不能跨行。 比如，如果要打印出含有字串”1024”的行，我就可能会用：	 cat filename | sed –n ‘/1024/p’sed命令详解!!(要学习shell的 朋友要好好看看)	 sed /^$/d filename	 可以删除文件中的空行。	 sed /^[[:space:]]*$/d filename	 可以删除内容为多个空格/tab组成的行。作者“For The Dream”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.waimv.com/linux/205/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
