NXT*_*NXT 10 unix linux awk command-line grep
在搜索字符串的代码时,我经常遇到的问题是我没有意义,没有上下文的结果.例如,如果函数调用分为3行,并且我搜索参数的名称,则我自己获取参数,而不是函数的名称.
例如,在包含的文件中
...
  someFunctionCall ("test",
                    MY_CONSTANT,
                    (some *really) - long / expression);
grepping for MY_CONSTANT将返回如下所示的行:
                    MY_CONSTANT,
同样,在评论栏中:
/////////////////////////////////////////
// FIXMESOON, do..while is the wrong choice here, because
// it makes the wrong thing happen
/////////////////////////////////////////
为FIXMESOON打气给出了非常令人沮丧的答案:
// FIXMESOON, do..while is the wrong choice here, because
当有数千次点击时,单行结果有点无意义.我想要做的是让grep知道源代码行的起点和终点,就像让它考虑";"一样简单.因为行分隔符将是一个良好的开端.
如果点击位于评论内,您可以使其返回整个评论区块的奖励积分.
我知道你不能单独使用grep来做到这一点.我也知道让grep返回一定数量的上下文的选项.有关如何在Linux下完成的任何建议?仅供参考我的首选语言是C和Perl.
我确信我可以写点什么,但我知道有人必须已经这样做了.
谢谢!
您可以将 pcregrep 与 -M 选项一起使用(多行匹配;pcregrep 是带有 Perl 兼容正则表达式的 grep)。就像是:
pcregrep -M ";*\R*.*thingtosearchfor*\R*.*;.*"