gpt4 book ai didi

linux - 我如何 grep 整个代码行,可能是包装的代码行?

转载 作者:IT王子 更新时间:2023-10-29 00:07:05 26 4
gpt4 key购买 nike

在搜索字符串代码时,我经常遇到这样的问题,即得到无意义、无上下文的结果。例如,如果一个函数调用分为 3 行,并且我搜索参数的名称,我得到的是单独一行的参数,而不是函数的名称。

例如,在一个文件中包含

...
someFunctionCall ("test",
MY_CONSTANT,
(some *really) - long / expression);

搜索 MY_CONSTANT 会返回如下一行:

                    MY_CONSTANT,

同样,在评论区:

/////////////////////////////////////////
// FIXMESOON, do..while is the wrong choice here, because
// it makes the wrong thing happen
/////////////////////////////////////////

对 FIXMESOON 的 Grepping 给出了非常令人沮丧的答案:

// FIXMESOON, do..while is the wrong choice here, because

当有几千次点击时,单行结果就有点没有意义了。我想做的是让 grep 知道源代码行的起点和终点,就像让它考虑“;”一样简单。因为行分隔符将是一个好的开始。

如果点击在评论内,您可以让它返回整个评论 block ,则可加分。

我知道您不能单独使用 grep 来完成此操作。我也知道让 grep 返回一定数量的上下文行的选项。关于如何在 Linux 下完成的任何建议?仅供引用,我的首选语言是 C 和 Perl。

我确定我可以写点东西,但我知道肯定有人已经这样做了。

谢谢!

最佳答案

您可以使用带有 -M 选项的 pcregrep(多行匹配;pcregrep 是带有 Perl 兼容正则表达式的 grep)。像这样的东西:

pcregrep -M ";*\R*.*thingtosearchfor*\R*.*;.*"

关于linux - 我如何 grep 整个代码行,可能是包装的代码行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2688309/

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