gpt4 book ai didi

c++ - 从 .cpp 文件中提取与模式匹配的 'if' block

转载 作者:行者123 更新时间:2023-11-30 05:15:12 24 4
gpt4 key购买 nike

我正在尝试将表达式与特定模式匹配的 C++ 代码库中的任何“if” block 复制到文本文件。这可能使用 grep/awk/sed 等的某种组合吗?

例子

如果我有包含如下代码的文件:

//File1.cpp
if(/*matching-expression-1*/)
{
//Code
}

//File2.cpp
if(/*non-matching-expression*/)
{
if(/*matching-expression-2*/)
{
//Code
}
}

//File3.cpp
if((/*matching-expression-3*/)
{
if(/*non-matching-expression*/)
{
//Code
}
}

我想得到这样的结果:

//OutputFile.txt

File1.cpp:
if(/*matching-expression-1*/)
{
//Code
}

File2.cpp:
if(/*matching-expression-2*/)
{
//Code
}

File3.cpp:
if((/*matching-expression-3*/)
{
if(/*non-matching-expression*/)
{
//Code
}
}

我同意包含其他匹配/不匹配的 if block 的 //Code block ,即使这会导致重复输入,而且对于选项卡来说没有必要缩进保留。

我可以毫不费力地使用 grep 来匹配我想要的表达式,但这只会给我包含“if” block 开头的行(这是一个好的开始!)但我不确定如何继续。

如有任何帮助,我们将不胜感激!

最佳答案

假设所有代码的格式都与您的问题相同,并且没有杂散括号(例如字符串或其他内容)那么这应该可以工作

perl -ne 'if(/if\(STRING\)/){$_.=<>;$b+=/{/g;}if($b > 0){print;$b+=/{/g;$b-=/}/g}' file

将字符串替换为您要搜索的任何内容。

关于c++ - 从 .cpp 文件中提取与模式匹配的 'if' block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43207233/

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