UNIX,如何从多个文件中删除注释?

时间:2010-11-17 03:32:25

标签: linux shell unix

我有几个C程序,每个程序开头都包含注释行。行以/ *开头,后跟第一行注释,但终结符行中的* /为only个字符。你能告诉我一种从所有文件中删除这些评论的方法吗?

3 个答案:

答案 0 :(得分:2)

find -name '*.c'

使用它来验证您正在使用正确的文件。

find -name '*.c' | xargs sed -i '0,/^*\/$/d'

这将删除包含仅包含终止符的第一行。

答案 1 :(得分:1)

这会删除以/*开头的行,*/的第一个匹配(必须是注释终结符,无论其行是否以额外空格开头):

sed '/^\/\*/,/\*\//d' < inputfile

答案 2 :(得分:1)

一种(丑陋的)方式是使用C预处理器cpp。 E.g:

$ echo "AAA ; /* hahaha */ " | cpp -
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "<stdin>"
AAA ;

虽然输出在语义上与输入完全相同,但cpp将替换所有预处理器指令,这可能不是您想要的。另一方面,非常擅长它的作用。