免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: arnina
打印 上一主题 下一主题

如何用sed去除注释行 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-07-23 23:09 |只看该作者
是想注释掉asp里面的这样的注释,缩减大小,我想这个应该意义很大

论坛徽章:
0
22 [报告]
发表于 2008-07-23 23:24 |只看该作者
原帖由 arnina 于 2008-7-23 20:21 发表
比如下面一个文件

comment.txt

c++ type comment // foobar

c type comment
/*
foobar
*/

如何用sed将注释去掉,得到:
c++ type comment

c type comment



人家说了是c++和c type了吧

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
23 [报告]
发表于 2008-07-23 23:32 |只看该作者
原帖由 arnina 于 2008-7-23 23:08 发表
不是的,没有说是c文件啊。

不好意思,想当然了,,

不过这个需求,更适合用词法分析来解决。
思路应该都是一样的,下面是一个删除C注释的awk脚本,可以参考一下
(如果asp注释格式跟C相同的话就可以直接用)

{
#state
#0=normal, 1=in string , 2=in C comm, 3= in C++ comm

for(i=1; i <= length($0); i++)
{
        c = substr($0, i, 1)

        if (state == 0) {
                if (c == "/") {
                        d = substr($0, i+1, 1)
                        if (d == "*")
                                state = 2
                        else if (d == "/" && c99)
                                state=3
                        else
                                printf("%s", c d)

                        i=i+2
                        continue
                }
                else if (c == "\"")
                        state = 1
        } else if (state == 1) {
                if (c == "\"" && substr($0, i-1, 1) != "\\")
                        state = 0
        } else if (state == 2 && i > 1 && substr($0, i-1,2) == "*/") {
                state = 0
                c = " "
        }

        if (state < 2)
                printf("%s", c)

}

if (state == 3 && !/\\$/)
        state = 0

if (state < 2)
        print ""

}

参考资源:
http://objectmix.com/awk/26721-awk-code-strip-c-comments-2.html

论坛徽章:
0
24 [报告]
发表于 2008-07-23 23:43 |只看该作者

回复 #23 yjh777 的帖子

asp当然不同

asp是单引号
php支持c和c++
等等。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP