Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 替换多行字符串中的行_Regex_Perl_Weblogic - Fatal编程技术网

Regex 替换多行字符串中的行

Regex 替换多行字符串中的行,regex,perl,weblogic,Regex,Perl,Weblogic,我将一个OracleWebLogicconfig.xml文件读入字符串。我希望更新其中的一系列行。我已经验证了我正在读取文件,设置行,并且能够使用我正在查找的参数更新正确的行,但是我似乎无法更新原始字符串 以下是主循环: while($lines=~m{(.*)}mgs){ my$nchunk=my$ochunk=1; 打印“#”='x70.\n”; my($ms)=$ochunk=~m{.*/(.*?)\.out.*}; my$nname=$monster->{$domain}->{$ms}-

我将一个OracleWebLogic
config.xml
文件读入字符串。我希望更新其中的一系列行。我已经验证了我正在读取文件,设置行,并且能够使用我正在查找的参数更新正确的行,但是我似乎无法更新原始字符串

以下是主循环:

while($lines=~m{(.*)}mgs){
my$nchunk=my$ochunk=1;
打印“#”='x70.\n”;
my($ms)=$ochunk=~m{.*/(.*?)\.out.*};
my$nname=$monster->{$domain}->{$ms}->{nodeName};
my$tname=$monster->{$domain}->{$ms}->{tierName};
my$newentry=sprintf(“%s%s.nodeName=-Dappdynamics.agent.nodeName=%s”,
$appdjar、$ms、$nname);
$newentry.=“$ms.appdynamics.tierName=-Dappdynamics.tierName=$tname”;
$nchunk=~s/()/$newentry\1/g;
打印“$ochunk\n”;
打印“#”-“x 70”。\n”;
打印“$nchunk\n”;
#$lines=~s!$ochunk!!msg;
#$lines=~s!$ochunk!$nchunk!msg;
}
如前所述,这将导致:

#======================================================================
-Xms512m-Xmx512m-Dweblogic.system.BootIdentityFile=/opt/app/oracle/user\u projects/domains/AccountingServices\u Domain/boot.properties-Dweblogic.Stdout=/opt/app/oracle/user\u projects/logs/AccountingServices\u Domain/AccountingCommon\u MS1.out-XX:+heapdumponautofmemoryerror-XX:HeapDumpPath=/opt/app/oracle/user\u projects/log/AccountingServices\u Domain/dumps-XX:+UnlockCommercialFeatures-XX:+FlightRecorder-Dcom.sun.management.jmxremote.port=40124-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote=false-XX:+UnlockCommercialFeatures-XX:+FlightRecorder-XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository=/opt/app/oracle/user\u projects/logs/AccountingServices\u Domain,maxage=10m,dumponexit=true,dumponexitpath=/opt/app/oracle/user_projects/logs/AccountingServices_Domain-XX:+UnlockDiagnosticVMOptions-XX:+DebugNonSafepoints-Dlog4j.configuration=文件:/opt/app/oracle/user_projects/applications/AccountingServices_Domain/log4j.xml
#----------------------------------------------------------------------
-Xms512m-Xmx512m-Dweblogic.system.BootIdentityFile=/opt/app/oracle/user\u projects/domains/AccountingServices\u Domain/boot.properties-Dweblogic.Stdout=/opt/app/oracle/user\u projects/logs/AccountingServices\u Domain/AccountingCommon\u MS1.out-XX:+heapdumponautofmemoryerror-XX:HeapDumpPath=/opt/app/oracle/user\u projects/log/AccountingServices\u Domain/dumps-XX:+UnlockCommercialFeatures-XX:+FlightRecorder-Dcom.sun.management.jmxremote.port=40124-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote=false-XX:+UnlockCommercialFeatures-XX:+FlightRecorder-XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository=/opt/app/oracle/user\u projects/logs/AccountingServices\u Domain,maxage=10m,dumponexit=true,dumponexitpath=/opt/app/oracle/user_projects/logs/AccountingServices_Domain-XX:+UnlockDiagnosticVMOptions-XX:+DebugNonSafepoints-Dlog4j.configuration=文件:/opt/app/oracle/user_projects/applications/AccountingServices_Domain/log4j.xml-javaagent:/opt/app/app/app/appdynamics/universal agent/monitor/java/javaagent.jarAccountingCommon\u MS1.nodeName=-Dappdynamics.agent.nodeName=AccountingCommon\u 2123 AccountingCommon\u MS1.appdynamics.tierName=-Dappdynamics.tierName=AccountingCommon
[[snip]]

我似乎无法“重新找到”源代码块,正如那些试图用零替换
$ochunk
的注释$行所示。

您正在以一种非常迂回的方式进行此操作,这就是为什么我无法理解您在最长时间内试图做什么的原因。你实际上想做的是

arguments
元素中的现有文本后插入附加字符串

你只需要一个替代品。我将它保留为全局的,以防XML中确实存在多个这样的元素。我无法测试它,但我知道它可以编译

$lines =~ s{ (<arguments>) (.*?) (</arguments>) }{

    my ($otag, $text, $ctag)  = ($1, $2, $3);
    my ($ms)   = $text =~ m{.*/(.*?)\.out};

    my $msdata = $monster->{$domain}{$ms};
    my $node   = $msdata->{nodeName};
    my $tier   = $msdata->{tierName};

    my $newentry = " $appdjar $ms.nodeName=-Dappdynamics.agent.nodeName=$node";
    $newentry   .= " $ms.appdynamics.tierName=-Dappdynamics.tierName=$tier";

    $otag . $text . $newentry . $ctag;
}segx
$lines=~s{()(.*)()}{
我的($otag,$text,$ctag)=($1,$2,$3);
my($ms)=$text=~m{.*/(.*?)\.out};
我的$msdata=$monster->{$domain}{$ms};
my$node=$msdata->{nodeName};
my$tier=$msdata->{tierName};
my$newentry=“$appdjar$ms.nodeName=-Dappdynamics.agent.nodeName=$node”;
$newentry.=“$ms.appdynamics.tierName=-Dappdynamics.tierName=$tier”;
$otag.$text.$newentry.$ctag;
}赛克斯

什么是
$monster
$domain
$appdjar
?看。$怪物是怪物哈希,是墓地狂欢!:)我想这是在显示我的年龄。它是一个散列,包含需要更新的参数。我们可以通过将输出滚动到最右侧来查看这些设置是否正确。第二行显示如何更新第一行。谢谢。“我似乎无法‘重新找到’源代码块,正如那些试图用零替换$ochunk的注释$line所示”我猜不出这可能意味着什么,而且因为这似乎是一条语句,如果问题出现,我认为这是相当重要的。当不必要时,不要添加
/m
修饰符。不要在字符串中使用
\1
等:它们应该是
$1
等。“#$lines=~s!$ochunk!!ms;”尝试在$lines中查找$ochunk并将其替换为零。这就是我的意思。由于$line是多行字符串,因此需要/m/g、 另一方面,从我的阅读来看,这是一个问题。谢谢,太好了!当我做这些练习时,我总是想到“循环”。不会想到在一百万年内处理替换部分的工作。太好了,先生!非常感谢你。如果您感兴趣,测试文件中有8个部分。其他文件可能会有更多。再次感谢。杰出的