perl正则表达式一行中有多个单词
我试图分割这些值,但没有得到预期的结果perl正则表达式一行中有多个单词,perl,Perl,我试图分割这些值,但没有得到预期的结果 $line = "sep 11 14:06:18 github-01-com sshd[4609]: Received disconnect from 192.168.1.1: disconnected by user"; if($line =~ /^(.*)\s+(\w+)/){ print "$1\n$2\n"; 我试图得到这样的输出 $val1 = "sep 11 14:06:18"; $val2 = "github-01-com"; $val3
$line = "sep 11 14:06:18 github-01-com sshd[4609]: Received disconnect from 192.168.1.1: disconnected by user";
if($line =~ /^(.*)\s+(\w+)/){
print "$1\n$2\n";
我试图得到这样的输出
$val1 = "sep 11 14:06:18";
$val2 = "github-01-com";
$val3 = "sshd[4609]:"
$val4 = "Received disconnect from 192.168.1.1: disconnected by user"
感谢这一行,您可以这样解码:
#!/usr/bin/perl
use strict;
use warnings;
my $line = "sep 11 14:06:18 github-01-com sshd[4609]: Received disconnect from 192.168.1.1: disconnected by user";
if ($line =~ m/^(\w+\s+\d+\s+(?:\d|:)+)\s+([^\s]+)\s+([^\s]+)\s+(.*)$/) {
print "\$1 = $1\n\$2 = $2\n\$3 = $3\n\$4 = $4\n";
}
以下是输出:
$1 = sep 11 14:06:18
$2 = github-01-com
$3 = sshd[4609]:
$4 = Received disconnect from 192.168.1.1: disconnected by user
顺便说一句,根据您尝试解析的日志文件的类型,可能存在一些模块来执行此操作,请尝试在中搜索。@scm您也可以在中搜索模块来解析日志文件。