<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/1.5.1-alpha" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: 在sed中使用循环</title>
	<link>http://blah.blogsome.com/2006/04/01/sed_iter/</link>
	<description>awk, sed, vim, blah blah ...</description>
	<pubDate>Fri, 27 Nov 2009 22:35:58 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.1-alpha</generator>

	<item>
		<title>by: hq00e</title>
		<link>http://blah.blogsome.com/2006/04/01/sed_iter/#comment-28</link>
		<pubDate>Tue, 25 Jul 2006 11:49:33 +0100</pubDate>
		<guid>http://blah.blogsome.com/2006/04/01/sed_iter/#comment-28</guid>
					<description>网友“无奈何”来信指出文中示例有错并给出了修改后的脚本。感谢“无奈何”网友，这是原邮件的内容：

   在读到《在sed中使用循环》中关于标志位控件循环一节时有些疑问特此请教。您提供的sed示例脚本：
＝＝＝＝＝＝＝＝＝＝＝＝
G;s/$/123456789/ # 循环9次
:loop
s/\n$//;t break  # 退出循环
... do sth       # 进行操作
s/.$//           # 减一操作
b loop           # next
＝＝＝＝＝＝＝＝＝＝＝＝
总也无法正确执行，好像有些问题。利用您提供的脚本构架创建测试代码如下：
test1
＝＝＝＝＝＝＝＝＝＝＝＝
G;s/$/123456789/
:loop
s/\n$//;t break
s/^/#/
s/.$//
b loop
:break
＝＝＝＝＝＝＝＝＝＝＝＝
其中 s/^/#/ 等句总是不被执行，深究其原因了解到，T 函数测试在当前输入行上是否进行成功替换，而语句 s/$/123456789/ 总是成功执行，所以进入 loop 段后一旦执行t命令就会跳转，其下语句总是不能执行。不知道您对上面的分析作何看法？再者 T 函数已执行了一个成功的替换函数在读入一个新行或执行一个 T 函数时将被重置。对此做两个测试片断如下：
test2
＝＝＝＝＝＝＝＝＝＝＝＝
G;s/$/123456789/
t loop
:loop
s/\n$//;t break
s/^/#/
s/.$//
t loop
:break
＝＝＝＝＝＝＝＝＝＝＝＝＝ test3
＝＝＝＝＝＝＝＝＝＝＝＝＝
G;s/$/123456789/
:loop
/\n$/t break
s/^/#/
s/.$//
b loop
:break
s/\n$//
＝＝＝＝＝＝＝＝＝＝＝＝＝</description>
		<content:encoded><![CDATA[	<p>网友“无奈何”来信指出文中示例有错并给出了修改后的脚本。感谢“无奈何”网友，这是原邮件的内容：</p>
	<p>   在读到《在sed中使用循环》中关于标志位控件循环一节时有些疑问特此请教。您提供的sed示例脚本：<br />
＝＝＝＝＝＝＝＝＝＝＝＝<br />
G;s/$/123456789/ # 循环9次<br />
:loop<br />
s/\n$//;t break  # 退出循环<br />
&#8230; do sth       # 进行操作<br />
s/.$//           # 减一操作<br />
b loop           # next<br />
＝＝＝＝＝＝＝＝＝＝＝＝<br />
总也无法正确执行，好像有些问题。利用您提供的脚本构架创建测试代码如下：<br />
test1<br />
＝＝＝＝＝＝＝＝＝＝＝＝<br />
G;s/$/123456789/<br />
:loop<br />
s/\n$//;t break<br />
s/^/#/<br />
s/.$//<br />
b loop<br />
:break<br />
＝＝＝＝＝＝＝＝＝＝＝＝<br />
其中 s/^/#/ 等句总是不被执行，深究其原因了解到，T 函数测试在当前输入行上是否进行成功替换，而语句 s/$/123456789/ 总是成功执行，所以进入 loop 段后一旦执行t命令就会跳转，其下语句总是不能执行。不知道您对上面的分析作何看法？再者 T 函数已执行了一个成功的替换函数在读入一个新行或执行一个 T 函数时将被重置。对此做两个测试片断如下：<br />
test2<br />
＝＝＝＝＝＝＝＝＝＝＝＝<br />
G;s/$/123456789/<br />
t loop<br />
:loop<br />
s/\n$//;t break<br />
s/^/#/<br />
s/.$//<br />
t loop<br />
:break<br />
＝＝＝＝＝＝＝＝＝＝＝＝＝ test3<br />
＝＝＝＝＝＝＝＝＝＝＝＝＝<br />
G;s/$/123456789/<br />
:loop<br />
/\n$/t break<br />
s/^/#/<br />
s/.$//<br />
b loop<br />
:break<br />
s/\n$//<br />
＝＝＝＝＝＝＝＝＝＝＝＝＝
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
