【发布时间】:2016-01-23 19:53:54
【问题描述】:
我正在尝试使用 unix 工具从源文件的大目录中删除所有初始多行 cmets。
比如我有这个文件testfile.c
/*
testfile.c
get rid of me
*/
int main(int argc, const char *argv[]) {
/*
keep me
*/
return 0;
}
/*
keep me
*/
我试过像这样使用 sed:
sed '/\/\*/,/\*\//d' testfile.c
但这会剥离所有多行 cmets 导致:
int main(int argc, const char *argv[]) {
return 0;
}
有没有办法做到这一点,并且只删除从文件的第一行开始的多行注释并保留所有其他 cmets?
【问题讨论】:
-
您要删除许可证吗?
-
是的,我计划完成后将它们放回去
-
^是用于匹配最开始出现的模式的锚标记。所以像这样使用/^\/\*/,/\*\//d -
这是行首的锚点,而不是文件的开始。这并不能解决问题。
-
查看我的regex。它匹配多行注释的第一次出现。使用
g进行全局搜索。