【发布时间】:2011-11-05 21:46:24
【问题描述】:
我正在尝试从 Java 源文件集合中删除第一个 C 样式注释(仅是第一个)。起初我尝试了一个多行 sed,但它不能正常工作,所以在谷歌搜索之后,似乎 Perl 是要走的路。我曾经喜欢 Perl,它是我用来制作 Web 程序的第一种语言,但我在试图让这个脚本工作时遇到了困难:
#!/usr/bin/perl -i.bak
$s=join("",<>);
$s=~ s/("(\\\\|\\"|[^"])*")|(\/\*([^*]|\*(?=[^\/]))*\*\/)|(\/\/.*)/$1 /;
print $s;
我用要处理的文件的文件名来调用它,例如./com.pl test.java。根据互联网上的所有内容,-i(就地编辑)应该将输出从打印语句重定向到文件,而不是打印到标准输出。现在事情是这样的:它没有。无论我尝试什么,我似乎都无法用打印输出替换文件。我也试过 $^I ,但也没有用。
我不知道这是否相关,但我使用的是 Ubuntu 11.04。
附:我知道正则表达式源代码的陷阱:)
【问题讨论】:
-
请参阅stackoverflow.com/questions/877470/… 以获取灵感...