2011-05-25 64 views
2

我有几个充满C代码的目录,我想从所有代码(.h文件和.c文件)中检索所有/ * * /注释的目录和子目录,把这些注释都放在一个文本文件中(事情不需要特别有序,只需要把它们全部放在那里)。我怎样才能做到这一点?检索所有来自大型C项目的评论

的任何解决方案,它可编写脚本将是巨大的......

+0

如果你有Linux下,你可以这样做容易吗?只是命令行它:X – AlanFoster 2011-05-25 20:52:48

+1

为什么你要这样做呢?嗯,我认为寻找猥亵是一个原因,但你最好在整个代码库中搜索它们。 – 2011-05-25 20:55:10

+2

doxygen不这样做吗?还是我误会了? – 2011-05-25 20:58:56

回答

4

检查这个答案蟒蛇的解决方案。 Python snippet to remove C and C++ comments

+0

我低估了这一点,因为我不知道你在说什么......如何解决它?抱歉。 – magnetar 2011-05-25 21:06:04

+0

@magnetar:如果你可以删除评论,你也可以打印它们。 Konrad Rudolph的第二个解决方案应该可行。 – 2011-05-25 21:08:25

+0

如果你不喜欢翻转雷克斯的感觉,你可以尝试下面的perl代码(这是谷歌的第一次点击: http://search.cpan.org/~rokr/String-Comments-提取-0.023/lib目录/字符串/评论/ Extract.pm – Hucker 2011-05-25 22:01:10

0

这里是一个sed脚本,打印所有的/ * * /评论,但它会在字符串打印“意见”(由托马斯·马修斯指出),它会不会打印//注释。不知道nestet评论会发生什么。

/\/\*/{ 
    bc 
:a 
    s/\///;Tz 
:c 
    s/^[^\/]*//;tb;Tb 
:b 
    s/^\/\*/\/\*/;Ta 
:e 
    s/\*\//\*\//;Td;s/\*\//\*\/\n/;x;tg 
:g 
    s/\(.\)/\1/;Tf;p;s/^.*$// 
:f 
    x;P;s/^.*\n//;bc 
:d 
    H;n;be 
:z 
} 

要打印的所有文件,所有的意见在目录中,按如下方式使用它:

for i in `find -iname "*.c" -or -iname "*.h"`; do echo ">>> $i"; sed -nf the.script.from.above < $i; done > output.txt 

用空格这将不处理文件名中,并输出将不漂亮!

干杯

相关问题