2010-11-17 54 views

回答

2
find -name '*.c' 

用这个来验证你正在处理正确的文件。

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

这将删除最多只包含终止符的第一行。

+0

非常感谢。这非常有帮助 – 2010-11-17 03:42:28

1

这将删除开头为/*彻底的*/的第一场比赛(必须是注释终止,不管它的线路是否有多余的空间或不启动):

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

OP显然只想删除第一个注释块。你的答案将删除所有这些。没有必要使用重定向,'sed'会接受一个文件名作为参数。 – 2010-11-17 04:00:32

1

一(丑陋的)方式是使用C预处理器cpp。例如: -

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

当输出在语义上是完全一样的你的输入,cpp将取代所有的预处理指令,这可能不是你想要的。另一方面,它是非常好擅长它。