<?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>Sybase数据库技术，数据库恢复专家 &#187; sed</title>
	<atom:link href="http://www.dbainfo.net/tag/sed/feed" rel="self" type="application/rss+xml" />
	<link>https://www.dbainfo.net</link>
	<description>提供Sybase ASE及Sybase SQL Anywhere数据库修复服务，电话：13811580958(微信)，QQ：289965371！We have many years of experience in recovering data from damanged Sybase devices. Contact us by Phone: +86 13811580958 Wechat: 13811580958 Email: 289965371@qq.com</description>
	<lastBuildDate>Sat, 14 Jun 2025 16:28:02 +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>使用sed提取指定内容的一种写法</title>
		<link>https://www.dbainfo.net/grep-some-characters-by-linux-sed.htm</link>
		<comments>https://www.dbainfo.net/grep-some-characters-by-linux-sed.htm#comments</comments>
		<pubDate>Fri, 02 Sep 2011 10:18:38 +0000</pubDate>
		<dc:creator>dbainfo</dc:creator>
				<category><![CDATA[Unix&Linux]]></category>
		<category><![CDATA[sed]]></category>

		<guid isPermaLink="false">http://www.dbainfo.net/?p=998</guid>
		<description><![CDATA[目的：使用linux中的sed命令提取指定内容 假设有字符串：&#60;li&#62;&#60;a target=&#34;_blank&#34; href=&#34;http://www.dbainfo.net&#34;&#62;&#38;#83;&#38;#121;&#38;#98;&#38;#97;&#38;#115;&#38;#101;&#38;#25968;&#38;#25454;&#38;#24211;&#38;#25216;&#38;#26415;&#38;#44;&#38;#25968;&#38;#25454; &#38;#24211;&#38;#24674;&#38;#22797;&#60;/a&#62;&#60;/li&#62; 我想从该字符串中提取出来红色标记的内容，也就是：&#38;#83;&#38;#121;&#38;#98;&#38;#97;&#38;#115;&#38;#101;&#38;#25968;&#38;#25454;&#38;#24211;&#38;#25216;&#38;#26415;&#38;#44;&#38;#25968;&#38;#25454;&#38;#24211;&#38;#24674;&#38;#22797; linux命令sed和awk都可以实现该需求，本文仅利用sed命令中替换相应正则表达式的方法来实现。 abc=&#34;&#60;li&#62;&#60;a target=\&#34;_blank\&#34; href=\&#34;http://www.dbainfo.net\&#34;&#62;&#38;#83;&#38;#121;&#38;#98;&#38;#97;&#38;#115;&#38;#101;&#38;#25968;&#38;#25454;&#38;#24211;&#38;#25216;&#38;#26415;&#38;#44;&#38;#25968;&#38;#25454;&#38;#24211;&#38;#24674;&#38;#22797;&#60;/a&#62;&#60;/li&#62;&#34; 方法为： echo $abc&#124; sed &#39;s/\(.*\)href=&#34;.*&#34;&#62;\(.*\)&#60;\/a&#62;.*/\2/g&#39; 上面sed命令中，正则表达式\(.*\)href=&#34;.*&#34;&#62;\(.*\)&#60;\/a&#62;.*中第一个红色标记的\(.*\) 因为在href=之前，所以表示源字符串中的&#60;li&#62;&#60;a target=&#34;_blank&#34;&#160; 第一个\(.*\) 之后的href=&#34;.*&#34;&#62; 对应源字符串中的href=&#34;http://www.dbainfo.net&#34;&#62;&#160; 第二个红色标记的\(.*\) 因为在href=&#34;http://www.dbainfo.net&#34;&#62;之后且&#60;/a&#62;的前面，就是我们需要的内容。最后的&#60;\/a&#62;.* 匹配源字符串中的&#60;/a&#62;&#60;/li&#62; 测试结果为： [root@VPS-CentOS5 ~]# abc=&#34;&#60;li&#62;&#60;a target=\&#34;_blank\&#34; href=\&#34;href=&#34;http://www.dbainfo.net&#34;&#62;http://www.dbainfo.net\&#34;&#62;&#38;#83;&#38;#121;&#38;#98;&#38;#97;&#38;#115;&#38;#101;&#38;#25968;&#38;#25454;&#38;#24211;&#38;#25216;&#38;#26415;&#38;#44;&#38;#25968;&#38;#25454;&#38;#24211;&#38;#24674;&#38;#22797;&#60;/a&#62;&#60;/li&#62;&#34; [root@VPS-CentOS5 ~]# echo $abc&#124; sed &#39;s/\(.*\)href=&#34;.*&#34;&#62;\(.*\)&#60;\/a&#62;.*/\2/g&#39; &#38;#83;&#38;#121;&#38;#98;&#38;#97;&#38;#115;&#38;#101;&#38;#25968;&#38;#25454;&#38;#24211;&#38;#25216;&#38;#26415;&#38;#44;&#38;#25968;&#38;#25454;&#38;#24211;&#38;#24674;&#38;#22797; 我们发现源字符串中左右尖括号都是成对出现的，可以如法炮制，另外一条命令为： echo $abc &#124; sed &#39;s/&#60;\(.*\)&#62;&#60;\(.*\)&#62;\(.*\)&#60;\(.*\)&#62;&#60;\(.*\)&#62;/\3/&#39; 中间红色加粗的\(.*\) 对应我们需要的内容。搜索的正则表达式中对应5部分，分别为： li a target=&#34;_blank&#34; href=&#34;http://www.dbainfo.net&#34; &#38;#83;&#38;#121;&#38;#98;&#38;#97;&#38;#115;&#38;#101;&#38;#25968;&#38;#25454;&#38;#24211;&#38;#25216;&#38;#26415;&#38;#44;&#38;#25968;&#38;#25454;&#38;#24211;&#38;#24674;&#38;#22797; /a /li 第3条正是我们所需要的结果。关于这5部分的输出为： [root@VPS-CentOS5 ~]# [...]]]></description>
			<content:encoded><![CDATA[<p>目的：使用linux中的sed命令提取指定内容</p>
<p style="word-break:break-all">假设有字符串：&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.dbainfo.net&quot;&gt;<span style="color:#f00;">&amp;#83;&amp;#121;&amp;#98;&amp;#97;&amp;#115;&amp;#101;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#25216;&amp;#26415;&amp;#44;&amp;#25968;&amp;#25454;</span></p>
<p style=""><span style="color: rgb(255, 0, 0);">&amp;#24211;&amp;#24674;&amp;#22797;</span>&lt;/a&gt;&lt;/li&gt;</p>
<p>我想从该字符串中提取出来红色标记的内容，也就是：&amp;#83;&amp;#121;&amp;#98;&amp;#97;&amp;#115;&amp;#101;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#25216;&amp;#26415;&amp;#44;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#24674;&amp;#22797;</p>
<p>linux命令sed和awk都可以实现该需求，本文仅利用sed命令中替换相应正则表达式的方法来实现。</p>
<p style="word-break:break-all">abc=&quot;&lt;li&gt;&lt;a target=<span style="color:#f00;">\&quot;</span>_blank<span style="color:#f00;">\&quot;</span> href=<span style="color:#f00;">\&quot;</span>http://www.dbainfo.net<span style="color:#f00;">\&quot;</span>&gt;&amp;#83;&amp;#121;&amp;#98;&amp;#97;&amp;#115;&amp;#101;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#25216;&amp;#26415;&amp;#44;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#24674;&amp;#22797;&lt;/a&gt;&lt;/li&gt;&quot;<span id="more-998"></span></p>
<p>方法为：</p>
<p>echo $abc| <span style="font-size:16px;">sed &#39;s/<span style="color:#f00;"><strong>\(.*\)</strong></span><span style="color:#00f;">href=&quot;.*&quot;&gt;</span><span style="color:#f00;"><strong>\(.*\)</strong></span><span style="color:#00f;"><strong>&lt;\/a&gt;.*</strong></span>/<strong><span style="color:#00ff00;">\2</span></strong>/g&#39;</span></p>
<p>上面sed命令中，正则表达式<span style="font-size:16px;"><span style="color:#f00;"><strong>\(.*\)</strong></span><span style="color:#00f;">href=&quot;.*&quot;&gt;</span><span style="color:#f00;"><strong>\(.*\)</strong></span><span style="color:#00f;"><strong>&lt;\/a&gt;.*</strong></span></span>中第一个红色标记的<span style="font-size:16px;"><span style="color:#f00;"><strong>\(.*\)</strong></span></span> 因为在href=之前，所以表示源字符串中的<u>&lt;li&gt;&lt;a target=&quot;_blank&quot;&nbsp;</u></p>
<p>第一个<span style="font-size:16px;"><span style="color:#f00;"><strong>\(.*\)</strong></span></span> 之后的<span style="font-size:16px;"><span style="color:#00f;">href=&quot;.*&quot;&gt;</span></span> 对应源字符串中的<u>href=&quot;http://www.dbainfo.net&quot;&gt;</u>&nbsp; 第二个红色标记的<span style="font-size:16px;"><span style="color:#f00;"><strong>\(.*\)</strong></span></span> 因为在href=&quot;http://www.dbainfo.net&quot;&gt;之后且&lt;/a&gt;的前面，就是我们需要的内容。最后的<span style="font-size:16px;"><span style="color:#00f;"><strong>&lt;\/a&gt;.*</strong></span></span> 匹配源字符串中的&lt;/a&gt;&lt;/li&gt;</p>
<p>测试结果为：</p>
<p>[root@VPS-CentOS5 ~]# <span style="color:#0000cd;">abc=&quot;&lt;li&gt;&lt;a target=\&quot;_blank\&quot; href=\&quot;href=&quot;http://www.dbainfo.net&quot;&gt;http://www.dbainfo.net\&quot;&gt;&amp;#83;&amp;#121;&amp;#98;&amp;#97;&amp;#115;&amp;#101;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#25216;&amp;#26415;&amp;#44;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#24674;&amp;#22797;&lt;/a&gt;&lt;/li&gt;&quot;</span></p>
<p>[root@VPS-CentOS5 ~]# <span style="color:#0000cd;">echo $abc| sed &#39;s/\(.*\)href=&quot;.*&quot;&gt;\(.*\)&lt;\/a&gt;.*/\2/g&#39; </span>&amp;#83;&amp;#121;&amp;#98;&amp;#97;&amp;#115;&amp;#101;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#25216;&amp;#26415;&amp;#44;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#24674;&amp;#22797;</p>
<p>我们发现源字符串中左右尖括号都是成对出现的，可以如法炮制，另外一条命令为：</p>
<p>echo $abc | <span style="font-size:16px;">sed &#39;s/<span style="color:#f00;">&lt;\(.*\)&gt;</span><span style="color:#00ff00;">&lt;\(.*\)&gt;</span><strong><span style="color:#f00;">\(.*\)</span></strong><span style="color:#00f;">&lt;\(.*\)&gt;</span><span style="color:#800080;">&lt;\(.*\)&gt;</span>/<strong><span style="color:#f00;">\3</span></strong>/&#39;</span><br />
	中间红色加粗的<span style="font-size:16px;"><strong><span style="color:#f00;">\(.*\)</span></strong></span> 对应我们需要的内容。搜索的正则表达式中对应5部分，分别为：</p>
<ol>
<li>li</li>
<li>a target=&quot;_blank&quot; href=&quot;http://www.dbainfo.net&quot;</li>
<li>&amp;#83;&amp;#121;&amp;#98;&amp;#97;&amp;#115;&amp;#101;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#25216;&amp;#26415;&amp;#44;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#24674;&amp;#22797;</li>
<li>/a</li>
<li>/li</li>
</ol>
<p>第3条正是我们所需要的结果。关于这5部分的输出为：</p>
<p>[root@VPS-CentOS5 ~]# <span style="color:#00f;">echo $abc | sed &#39;s/&lt;\(.*\)&gt;&lt;\(.*\)&gt;\(.*\)&lt;\(.*\)&gt;&lt;\(.*\)&gt;/<strong><span style="font-size: 14px;">\1</span></strong></span>/&#39;<br />
	li<br />
	[root@VPS-CentOS5 ~]# <span style="color:#00f;">echo $abc | sed &#39;s/&lt;\(.*\)&gt;&lt;\(.*\)&gt;\(.*\)&lt;\(.*\)&gt;&lt;\(.*\)&gt;/<strong><span style="font-size:14px;">\2</span></strong>/&#39;</span><br />
	a target=&quot;_blank&quot; href=&quot;http://www.dbainfo.net&quot;<br />
	[root@VPS-CentOS5 ~]# <span style="color:#00f;">echo $abc | sed &#39;s/&lt;\(.*\)&gt;&lt;\(.*\)&gt;\(.*\)&lt;\(.*\)&gt;&lt;\(.*\)&gt;/<strong><span style="font-size:14px;">\3</span></strong>/&#39;</span><br />
	&amp;#83;&amp;#121;&amp;#98;&amp;#97;&amp;#115;&amp;#101;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#25216;&amp;#26415;&amp;#44;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#24674;&amp;#22797;<br />
	[root@VPS-CentOS5 ~]#<span style="color:#00f;"> echo $abc | sed &#39;s/&lt;\(.*\)&gt;&lt;\(.*\)&gt;\(.*\)&lt;\(.*\)&gt;&lt;\(.*\)&gt;/<strong><span style="font-size:14px;">\4</span></strong>/&#39;</span><br />
	/a<br />
	[root@VPS-CentOS5 ~]# <span style="color:#00f;">echo $abc | sed &#39;s/&lt;\(.*\)&gt;&lt;\(.*\)&gt;\(.*\)&lt;\(.*\)&gt;&lt;\(.*\)&gt;/<strong><span style="font-size: 14px;">\5</span></strong></span>/&#39;<br />
	/li<br />
	[root@VPS-CentOS5 ~]#<span style="color:#00f;"> echo $abc | sed &#39;s/&lt;\(.*\)&gt;&lt;\(.*\)&gt;\(.*\)&lt;\(.*\)&gt;&lt;\(.*\)&gt;/<strong><span style="font-size: 14px;">\6</span></strong></span>/&#39;<br />
	sed: -e expression #1, char 44: invalid reference \6 on `s&#39; command&#39;s RHS<br />
	-bash: echo: write error: Broken pipe<br />
	[root@VPS-CentOS5 ~]# <span style="color:#00f;">echo $abc | sed &#39;s/&lt;\(.*\)&gt;&lt;\(.*\)&gt;\(.*\)&lt;\(.*\)&gt;&lt;\(.*\)&gt;/<strong><span style="font-size: 14px;">\0</span></strong></span>/&#39;<br />
	&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.dbainfo.net&quot;&gt;&amp;#83;&amp;#121;&amp;#98;&amp;#97;&amp;#115;&amp;#101;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#25216;&amp;#26415;&amp;#44;&amp;#25968;&amp;#25454;</p>
<p>&amp;#24211;&amp;#24674;&amp;#22797;&lt;/a&gt;&lt;/li&gt;</p>
<p>通过以上可以了解关于sed命令中替换字符时所用的正则表达式的一些方法了。</p>
<div style="clear: both; margin: 10px 0pt; border: 1px dashed rgb(153, 153, 153); font-size: 12px; padding: 5px 10px;">
<li>本文链接地址：<a href="https://www.dbainfo.net/grep-some-characters-by-linux-sed.htm">https://www.dbainfo.net/grep-some-characters-by-linux-sed.htm</a>；</li>
<li>本文为dbainfo个人原创，请在尊重作者劳动成果的前提下进行转载；</li>
<li>转载务必注明原始出处 : <a href="https://www.dbainfo.net/">Sybase数据库技术，数据库恢复专家</a>；</li>
<li>对《<a href="https://www.dbainfo.net/grep-some-characters-by-linux-sed.htm">使用sed提取指定内容的一种写法</a>》有何疑问或见解，请在本文下方发表；</li>
<li>对网站还有其他问题或建议，请提交在<a href="https://www.dbainfo.net/messages" target="_blank">留言板</a>，谢谢！</li>
</div>
<h2  class="related_post_title">随机日志</h2><ul class="related_post"><li>2010-04-07 -- <a href="https://www.dbainfo.net/sybase-table-add-drop-column-physical-storage-processing.htm" title="sybase中给表增加和删除字段时内部处理过程分析">sybase中给表增加和删除字段时内部处理过程分析</a> (0)</li><li>2011-03-04 -- <a href="https://www.dbainfo.net/linux-vim-hex-edit-file.htm" title="vim以十六进制查看文本">vim以十六进制查看文本</a> (0)</li><li>2013-11-11 -- <a href="https://www.dbainfo.net/ase-15-0-3-for-windows-installation1.htm" title="Sybase ASE 15.0.3 for windows平台安装文档 – 1、安装前的准备工作">Sybase ASE 15.0.3 for windows平台安装文档 – 1、安装前的准备工作</a> (1)</li><li>2015-03-08 -- <a href="https://www.dbainfo.net/sap-ase-cr-number-4.htm" title="SAP Adaptive Server Enterprise的所有已知BUG列表（4）">SAP Adaptive Server Enterprise的所有已知BUG列表（4）</a> (0)</li><li>2011-04-28 -- <a href="https://www.dbainfo.net/oracle-10g-installation-libstdc-all_no_orclihsodbc.htm" title="oracle10g安装过程中Error in invoking target ‘all_no_orcl ihsodbc’ of makefile问题的解决">oracle10g安装过程中Error in invoking target ‘all_no_orcl ihsodbc’ of makefile问题的解决</a> (0)</li><li>2015-03-08 -- <a href="https://www.dbainfo.net/sap-asa-cr-number-1.htm" title="SAP SQL Anywhere的所有已知BUG列表（1）">SAP SQL Anywhere的所有已知BUG列表（1）</a> (0)</li><li>2012-04-11 -- <a href="https://www.dbainfo.net/unix-linux-echo-bracket-match-filename.htm" title="echo 命令的模式匹配字符功能">echo 命令的模式匹配字符功能</a> (2)</li><li>2010-12-13 -- <a href="https://www.dbainfo.net/sqlserver2005-reinstall-sql-engine.htm" title="SQL Server 2005系统数据库master重建、修复">SQL Server 2005系统数据库master重建、修复</a> (0)</li><li>2010-09-13 -- <a href="https://www.dbainfo.net/sybase-ase-1503-character-set-utf8-chinese-language.htm" title="Sybase ASE 15.0.3 for windows 安装中文语言支持、配置字符集">Sybase ASE 15.0.3 for windows 安装中文语言支持、配置字符集</a> (0)</li><li>2014-07-02 -- <a href="https://www.dbainfo.net/restore_delete_file_linux_ext3grep.htm" title="linux上使用ext3grep恢复误删除的文件">linux上使用ext3grep恢复误删除的文件</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>https://www.dbainfo.net/grep-some-characters-by-linux-sed.htm/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
