我创建了一个解析命令输出的函数。
命令的输出如下:
Host-profile-count User 114
(注意:数字114不是常数。可以是任何正数> = 0)
现在我只需要返回数字(在本例中为114)。 我想我的脚本中的正则表达式是错误的。当我运行脚本时,我得到输出为0.它应该是114。 有人可以帮我解决正则表达式吗?
sub _count {
my ($self) = @_;
my $cmd = 'command goes here ';
my $profiles = 0;
$self->execute($cmd);
foreach my $line ( @{ $self->get_stdout() } ) {
if ( $line =~ m/Host\sprofile\scount\s+\S*\s+(\S*)/msx ) {
$profiles = $1;
}
}
$profiles =~ s/^\s+|\s+$//msxg;
return $profiles;
}
答案 0 :(得分:0)
是的,你笨拙地放置\s
(匹配任何空格字符)而不是连字符。
m/Host-profile-count\s+\S*\s+(\S*)/msx
如果需要,在\b
之前添加单词边界Host
(,在单词字符和非单词字符之间匹配)。