[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: 问一个sed的问题



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

amateur 写道:
> On Wed, Nov 29, 2006 at 09:19:54PM +0800, shell wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> amateur 写道:
>>> On Wed, Nov 29, 2006 at 07:29:53PM +0800, jun yu wrote:
>>>> 可以的
>>>>
>>>> http://www-128.ibm.com/developerworks/cn/linux/shell/sed/sed-1/index.html
>>>>
>>>> 具体你可以看上面链接的介绍.
>>> 上面好象没有提到任何与多行模式相关的内容,不知道你是怎么做的,能提示一
>>> 下吗?比如下例:
>>>
>  >
>> 虽然不知道怎么做,不过main函数的匹配就是典型的多行匹配。
>
> 那是我没有表达清楚了,我的主要目的是去掉源代码中的注释,这个需要在多行
> 中进行搜索匹配,应该不是多行替换,因为 sed 的替换操作好似只能在一行内
> 使用,而 sed 的行操作 (d/p) 都是针对整行进行的,比如我用匹配 main 函数
> 的方法匹配注释的话,就会是的包含有 /* */ 注释的所有行都会被删除。象下
> 面的例子就不能用这种方法:
>
>  int main()
>  {
>      do_something; /* this block is commented
>      do_other_thing;
>      ...
>      do_third_thing; */
>
>  }
>
>>>>> 有没有办法使得可以替换多行内容,比如将一个 C++
>>>>> 语言源文件中的所有注释
>>>>> 全部去掉,对于 // 开始的注释比较好处理,但对于 /* xxx
>>>>> */ 这种注释就比
>>>>> 较麻烦了。
>

要我碰这种情况就写C代码了——不过考虑情况蛮多的,应该有50多行吧——
或者要么你三次匹配,头两次是完全的替换/*或者*/为\n/*或者*/\n。然后再匹
配——就是比较蠢了——

- --
与其相濡以沫,不如相忘于江湖
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFbu9SOhzb4WnHl2oRAt1bAKCrffeDfo/Mn7T2JZT29kwIwUBpZACfWpCJ
mOOAR8snD1x6/0+o4CGXSPM=
=A2Rv
-----END PGP SIGNATURE-----


Reply to: