#!usr/bin/perl
$file_name = "file.txt";
open(FILE,$file_name);
while(<FILE>)
{
my $line = $_;
if($line =~ m/Svr\b/)
{
my $server_name;
$server_name = $1;
print $server_name;
}
}
file.txt的:
ewrerfSvr//To be extracted
Rate=rpm
ID=123
RATE=45
ADDR=retriveBal
Grocer="-r -e ${MAIN_ROOT}/logs/stderr -o ${MAIN_ROOT}/logs/stdout -A --"
freedonSvr
BALFSvr //to be extracted
Rate=rpm1
ID=12323
RATE=45etf
ADDR=retriveBal
Grocer="-r -e ${MAIN_ROOT}/logs/stderr -o ${MAIN_ROOT}/logs/stdout -A --"
freedonSvr -D ${REV_AccountBalance_NAME}"//
我还要提取:
REV_AccountBalance
建议我使用正则表达式来做到这一点。
答案 0 :(得分:4)
#!usr/bin/perl
use strict;
use warnings;
my $file_name = "file.txt";
open(my $fh,$file_name) or die "Could not open file";
while(<$fh>) {
if (m/(\w*Svr)\b/) { print "$1\n"; }
}
您应该习惯使用warnings
和strict
并捕获来自open
等来电的错误。
特别是在回答您的问题时,您需要在正则表达式中使用括号来提取$N
个变量。
答案 1 :(得分:2)
$1
会在捕获括号时为您提供匹配字符串的一部分,但您没有这些。你的意思是你的正则表达式是m/Svr\b(.+)/
吗?请显示您想要获得的输出; file.txt中的注释不够明确。