gpt4 book ai didi

regex - 从文件中删除第一个多行注释

转载 作者:行者123 更新时间:2023-12-05 01:10:01 25 4
gpt4 key购买 nike

我正在尝试使用 unix 工具从大型源文件目录中删除所有初始多行注释。

例如,我有这个文件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

但这会删除所有多行注释,导致:

int main(int argc, const char *argv[]) {
return 0;
}

有没有办法做到这一点,并且仅删除从文件第一行开始的多行注释,并保留所有其他注释?

最佳答案

这假设在第一个多行注释之前您的文件中没有任何内容。它只是说在您看到结束第一条评论的 */ 后开始打印(然后无论看到什么都不会再停止)。

$ awk '!f&&/\*\//{f=1;next}f' testfile.c 

int main(int argc, const char *argv[]) {
/*
keep me
*/
return 0;
}


/*
keep me
*/

说明:

!f && /\*\// { f=1; next }

如果未设置标志f(即,如果f等于0,程序开始时会这样做),并且当前行包含模式 */ (其中两个字符都需要使用 \ 转义),然后将标志设置为 1 并立即转到下一行(不打印)。

f

如果标志 f 设置为 1,则打印当前行(请记住,只有当 next 语句为 < em>未执行,从而避免打印初始注释的最后一行)。

关于regex - 从文件中删除第一个多行注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34968109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com