gpt4 book ai didi

regex - 多行 grep 递归查找变量(构造函数)定义

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:11 25 4
gpt4 key购买 nike

如何在目录内的所有文件中创建多行 grep,打印出两个模式之间的字符串(包括模式本身)?

我尝试使用多种变体,但我有点坚持使用匹配多行的正则表达式。

grep -RPzo "var Class = (.*) \};" ./
grep -RPzo "var Class = function\(\{(.*)\};" ./

grep 命令应该递归地查找所有文件,并打印出“var Class =”和第一个“};”之间(包括)的所有内容。发生在它之后,可能是在几个换行符之后。仅使用 grep(而不是 pcregrep)可以实现这一点吗?

JavaScript 函数定义的第一个模式工作正常,所以这就是我陷入困境的地方:

grep -RPzo "var Class = function\((.*)\)\s\{" ./

应该匹配的内容的示例定义(以便更轻松地尝试):

var Class = function(data, game) {

var settings = lychee.extend({}, data);

this.foo = { x: 0, y: 0, z: 0 };


this.setFoo(settings.foo);

lychee.game.Bar.call(this, settings);

settings = null;

};

最佳答案

或者使用 gAWK!

{
if( $0 ~ /\{/ )
cbo++;
if( $0 ~ /\}/ )
cbo--;
if( cbo == 1 && $0 ~ "^([[:space:]]?+)(.+)([[:space:]]+)\\{$" )
rec=1
if( rec == 1 )
buff = ( buff ? buff "\n" : "" ) $0
if( cbo == 0 )
rec=0
} END {
if( cbo == 0 )
print buff
else
print "Dude something funkey goes on with ur input... " cbo " brackets are left open!"
}

示例: http://pastebin.com/TTCHBPvm

关于regex - 多行 grep 递归查找变量(构造函数)定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22294464/

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