我有一个file.pc(Pro c),当从Windows传递过来时,与Linux有一些兼容问题。因此,我试图创建一个脚本来以我需要的格式对文档进行形式化,但是我遇到了//注释的格式问题。问题是: 我需要将所有以//开头的注释替换为/ * / comments 我已经做完了,但是我有一个简单的问题,在某些文件中,我将//注释到/ * /注释中,例如下面的示例:
/*
// some comments
code;
code;
*/
所以当我用脚本替换它时,它看起来像这样:
/*
/* some comments */
code;
code;
*/
但是父亲注释的最后* /给我一个错误,因为不能有两个* /串联在一起,所以最后一个* /给我一个错误。
我只需要替换不只是/ * /注释中的注释 并将其中的//替换为一个/
for file in $(ls $path)
do
sed -i -e '/\/\// s/$/ *\//g' -e 's/\/\//\/* /g' $path/file
done
答案 0 :(得分:1)
此Perl脚本应该对它作为参数获取的每个文件进行处理。
use v5.10;
for my $file (@ARGV) {
-f $file or warn "$file is not a plain file, ignoring..." and next;
open my $fh, '<', $file;
my @content = <$fh>;
close $fh;
my $comment = 0;
for (keys @content) {
$comment or $content[$_] =~ /\/\*/ and $comment = 1;
$comment and $content[$_] =~ /\*\// and $comment = 0;
$comment or $content[$_] =~ s/\/\/\s*(.*?)\s*$/\/\* $1 \*\// and $content[$_].="\n";
}
open $fh, '>', $file;
print $fh @content;
close $fh;
}
要执行它,将内容插入文件并在ksh命令行中写入。
perl <name_of_script>.pl <files>