[英]Perl script to print the matching line from a text file
Text file lines:文本文件行:
2018-03-02 10:56:06,808 DEBUG [com.server.hdmi.xmlgenerator.XMLGenerator] XMLGenerator TLS ID size 142392_REQ_2018-03-02T09-53-18-991+10-00:3561
2018-03-02 10:56:02,074 DEBUG [com.server.hdmi.xmlgenerator.XMLGenerator] XMLGenerator TLS ID size 142401_REQ_2018-03-02T09-53-20-607+10-00:1444
2018-03-02 10:56:02,074 INFO [com.server.hdmi.xmlgenerator.XMLGenerator] Exit createDOMTreefromXMLGenerator
2018-03-02 10:56:02,074 DEBUG [com.server.hdmi.xmlgenerator.XMLGenerator] generating file for TranID:142401:D:/InterfaceData/Address\142401_RESP_2018-03-02T10-55-35-035+10-00.xml
My script:我的脚本:
my $LogDir = '\\\\server\\ddrive\support\purushoth\log';
if(-e $LogDir)
{
opendir(DIR, $LogDir);
while (defined(my $file = readdir (DIR)))
{
if ($file =~ m/server/i)
{
my $fullfilename = $LogDir."\\".$file;
my @logFileLines = ();
open (LOGFILE, "$fullfilename") or die "Could not open file";
{
@logFileLines = <LOGFILE>;
}
close(LOGFILE);
my $temp2 = 0;
foreach my $line1 (@logFileLines)
{
chomp($line1);
if ( $line1 =~ (m!/^(\d{4}-\d{2}-\d{2}\s{1}\d{2}:\d{2}:\d{2})\s+.*XMLGenerator\s+TLS\s+ID\s+size\s+/.*\$!);
{
print "the line match in the server log: $line1\n";
}
}
}
}
}
From the log file, I want to print only matching lines like this.从日志文件中,我只想打印这样的匹配行。 I tried with my script, but it's not working.
我试过我的脚本,但它不起作用。
2018-03-02 10:56:06,808 DEBUG [com.server.hdmi.xmlgenerator.XMLGenerator] XMLGenerator TLS ID size 142392_REQ_2018-03-02T09-53-18-991+10-00:3561
Please help me to read such lines and print it.请帮我阅读这些行并打印出来。 And also i want to assign the last part of this line.
而且我想分配这一行的最后一部分。
142392_REQ_2018-03-02T09-53-18-991+10-00:3561
If the issue is with the regular expression, then here's the small sample with the correctly working one:如果问题出在正则表达式上,那么这里是一个正确工作的小样本:
#!/usr/bin/perl
my @lines = (
'2018-03-02 10:56:06,808 DEBUG [com.server.hdmi.xmlgenerator.XMLGenerator] XMLGenerator TLS ID size 142392_REQ_2018-03-02T09-53-18-991+10-00:3561',
'2018-03-02 10:56:02,074 DEBUG [com.server.hdmi.xmlgenerator.XMLGenerator] XMLGenerator TLS ID size 142401_REQ_2018-03-02T09-53-20-607+10-00:1444',
'2018-03-02 10:56:02,074 INFO [com.server.hdmi.xmlgenerator.XMLGenerator] Exit createDOMTreefromXMLGenerator',
'2018-03-02 10:56:02,074 DEBUG [com.server.hdmi.xmlgenerator.XMLGenerator] generating file for TranID:142401:D:/InterfaceData/Address\142401_RESP_2018-03-02T10-55-35-035+10-00.xml'
);
foreach my $line (@lines) {
if ($line =~ /^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*XMLGenerator TLS ID size (.*)/) {
print "Timestamp: $1, TLS ID: $2\n";
} elsif ($line =~ /^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*generating file for.*\\(.*)/) {
print "Timestamp: $1, filename: $2\n";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.