begintran和endtran问题

begintran和endtran问题

如题,一个程序中有多个begintran和endtran,现在有冲突,需要将中间多余的begintran和endtran注掉,只保留最外层的一个begintran和endtran,如何实现这个功能?请大家赐教,多谢!      
拿 vi 改一下不成?      
引用:
原帖由 dearvoid 于 2008-5-20 17:38 发表
拿 vi 改一下不成?
问题是太多了,没法手工一个个的去改,必须要用程序实现才行,多谢dearvoid了^_^      
sed 替换可以指定范围的:
引用:
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=4259 $?=0] ; cat -n file
     1
     2  begin
     3  ...
     4  end
     5
     6  begin
     7  ...
     8  end
     9
    10  begin
    11  ...
    12  end
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=4259 $?=0] ; sed -e '3,11s/\(begin\|end\)/#\1/' file

begin
...
#end

#begin
...
#end

#begin
...
end
-(dearvoid@LinuxEden:Forum)-(~/tmp)-
[$$=4259 $?=0] ; bye
      
只要留第一个和最后一个? 用不用考虑嵌套呢      
应该没那么复杂吧