我正在执行open 3,如下所示我从SYSOUT
的sysout下面的行 <May 7, 2013 1:21:59 AM IST> <Info> <Security> <BEA-090905> <Disabling CryptoJ JCE Provider self-integrity check for better startup performance. To enable this check, specify -Dweblogic.security.allowCryptoJDefaultJCEVerification=true>
<May 7, 2013 1:21:59 AM IST> <Info> <Security> <BEA-090906> <Changing the default Random Number Generator in RSA CryptoJ from ECDRBG to FIPS186PRNG. To disable this change, specify -Dweblogic.security.allowCryptoJDefaultPRNG=true>
<May 7, 2013 1:21:59 AM IST> <Notice> <Security> <BEA-090898> <Ignoring the trusted CA certificate "CN=CertGenCA,OU=FOR TESTING ONLY,O=MyOrganization,L=MyTown,ST=MyState,C=ka". The loading of the trusted certificate list raised a certificate parsing exception PKIX: Unsupported OID in the AlgorithmIdentifier object: 1.2.840.113549.1.1.11.>
我的预期字符串
<Composites>
i=0
compositedetail=swlib:soaprov/soacomposite=eis/FileAdapter#eis/FileAdapter#
swlib:soaprov/soacomposite=eis/FileAdapter#eis/FileAdapter# starts with swlib
</Composites>
我想忽略BEA安全性的行,只打印我期望的字符串。我该怎么办?
my $ command = $ java。 '-classpath'。 $ classpath。 ''。 $ secOptions。 ''。 $ className。 ''。 $ serviceUrl。 ''。 $复合材料;
local (*HANDLE_IN, *HANDLE_OUT, *HANDLE_ERR);
my $pid = open3( *HANDLE_IN, *HANDLE_OUT, *HANDLE_ERR, "$command") ;
my $nextLine;
while(<HANDLE_OUT>) {
$nextLine= $_;
print $nextLine;
}
答案 0 :(得分:1)
你可以使用正则表达式来做到这一点。当然你也可以使用某种xml解析器,但在这种情况下它会有点过分。
my $debug = 1;#set 1 for debugging
while(my $nextLine=<HANDLE_OUT>) {
chomp($nextLine);
if ($nextLine =~ m!<BEA-!){
print "Skipping this line (BEA): |$nextLine|\n" if $debug;
}
print $nextLine."\n";