<?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>生活周遭 &#187; sed</title>
	<atom:link href="http://blog.leirahua.com/tag/sed/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.leirahua.com</link>
	<description>In My Circle</description>
	<lastBuildDate>Wed, 27 Jan 2010 15:56:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>sed的in-place edit选项，和RTFM</title>
		<link>http://blog.leirahua.com/2006/sed%e7%9a%84in-place-edit%e9%80%89%e9%a1%b9%ef%bc%8c%e5%92%8crtfm/</link>
		<comments>http://blog.leirahua.com/2006/sed%e7%9a%84in-place-edit%e9%80%89%e9%a1%b9%ef%bc%8c%e5%92%8crtfm/#comments</comments>
		<pubDate>Mon, 13 Mar 2006 13:59:52 +0000</pubDate>
		<dc:creator>leira</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[regexp]]></category>
		<category><![CDATA[sed]]></category>

		<guid isPermaLink="false">http://blog.leirahua.com/articles/sed%e7%9a%84in-place-edit%e9%80%89%e9%a1%b9%ef%bc%8c%e5%92%8crtfm.html</guid>
		<description><![CDATA[在Debian Administration上看到Search and replace across many files with a perl one-liner这篇文章。多文件的Search and Replace的Linux风格处理方式，也是我一直思考的，这篇文章提供的是一个perl的解决方案。而对于这种问题，最直接想到的解决方案应该是sed吧？而且对于Perl，我到现在还是个门外汉。 不过一直以为sed不能直接对源文件修改，必须重定向到新文件，所以觉得在批量处理中很麻烦，因为每次都必须指定新文件名，然后在覆盖回源文件。为此还傻傻的专门写过一个runsed的shell脚本用于处理重定向到中间文件再覆盖回源文件的工作，让sed可以直接修改源文件，适用于批量处理。还沾沾自喜，以为找到了最终的解决方案。 在上面这篇文章中，比较关键的是用到了perl的 -i 参数edit the files in-place，直接修改源文件。这时候我想，sed也是应该有这么一个in-place edit的选项的，只是我以前没有找到罢了。于是man sed，然后在man page的32行就看到了 -i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied) 这个参数。这时候才觉得自己好傻，没有好好的RTFM，而且还好好的自作聪明了一把。 sed的这个 -i[SUFFIX], –in-place[=SUFFIX] 参数功能还真的很强，除了能够直接修改源文件，还能自动备份源文件，指出备份文件的suffix，真是非常方便。（居家旅游，杀人灭口，必备良药？XD）又可以快乐的sed生活了。 现在，关于 Search and Replace 和 Regular Expression，还有一个问题困扰我，在这儿记下来。 就是将文件中符合某个pattern的字符串打印出来。注意，只是符合这个pattern的字符串本身，而不是所在行。直接一看，这怎么都是grep的工作嘛，可以在对grep狠狠的RTFM以后，还是未果。真是奇怪，总觉得打印搜索到的pattern本身，比打印行要容易的多嘛，怎么会这么难找？Python脚本自然可以很容易就实现，但是总觉得已有的shell工具肯定是有这样的功能了，只是我没找到罢了。希望有达人指点。（不要告诉我grep后sed哦～）]]></description>
			<content:encoded><![CDATA[<p>在<a href="http://www.debian-administration.org/">Debian Administration</a>上看到<a href="http://www.debian-administration.org/articles/298">Search and replace across many files with a perl one-liner</a>这篇文章。多文件的Search and Replace的Linux风格处理方式，也是我一直思考的，这篇文章提供的是一个perl的解决方案。而对于这种问题，最直接想到的解决方案应该是sed吧？而且对于Perl，我到现在还是个门外汉。</p>
<p>不过一直以为sed不能直接对源文件修改，必须重定向到新文件，所以觉得在批量处理中很麻烦，因为每次都必须指定新文件名，然后在覆盖回源文件。为此还傻傻的专门写过一个runsed的shell脚本用于处理重定向到中间文件再覆盖回源文件的工作，让sed可以直接修改源文件，适用于批量处理。还沾沾自喜，以为找到了最终的解决方案。</p>
<p>在上面<a href="http://www.debian-administration.org/articles/298">这篇文章</a>中，比较关键的是用到了perl的 -i 参数edit the files in-place，直接修改源文件。这时候我想，sed也是应该有这么一个in-place edit的选项的，只是我以前没有找到罢了。于是man sed，然后在man page的32行就看到了</p>
<pre>-i[SUFFIX], --in-place[=SUFFIX]
                edit files in place (makes backup if extension supplied)</pre>
<p>这个参数。这时候才觉得自己好傻，没有好好的<acronym title="Read The Fucking Manual">RTFM</acronym>，而且还好好的自作聪明了一把。</p>
<p>sed的这个 -i[SUFFIX], –in-place[=SUFFIX] 参数功能还真的很强，除了能够直接修改源文件，还能自动备份源文件，指出备份文件的suffix，真是非常方便。（居家旅游，杀人灭口，必备良药？XD）又可以快乐的sed生活了。</p>
<p>现在，关于 Search and Replace 和 Regular Expression，还有一个问题困扰我，在这儿记下来。</p>
<p>就是将文件中符合某个pattern的字符串打印出来。注意，只是符合这个pattern的字符串本身，而不是所在行。直接一看，这怎么都是grep的工作嘛，可以在对grep狠狠的<acronym title="Read The Fucking Manual">RTFM</acronym>以后，还是未果。真是奇怪，总觉得打印搜索到的pattern本身，比打印行要容易的多嘛，怎么会这么难找？Python脚本自然可以很容易就实现，但是总觉得已有的shell工具肯定是有这样的功能了，只是我没找到罢了。希望有达人指点。（不要告诉我grep后sed哦～）</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leirahua.com/2006/sed%e7%9a%84in-place-edit%e9%80%89%e9%a1%b9%ef%bc%8c%e5%92%8crtfm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
