如何打印匹配,我需要在Perl
问题描述:
该模式的行我对这个话题的一些问题:从数据如何打印匹配,我需要在Perl
How can I print lines after a regex match in Perl?
我使用的源代码并修改正则表达式(F) 。
但是当我跑的时候,那些有F的线也会被拿起来。虽然我已经将正则表达式更改为(F)。谁可以帮我这个事?
这是我的数据(输入文件):我使用
Device#1
00 000 000 000 1 > beta (F)
Device#2
00 000 000 1 000 > beta (F)
Fail
Device#3
00 000 1 000 000 > beta (F)
57020 0 Main LDO VOUT, IN = 3.5V, OUT = 200u out 3.480 V 3.480 V (F) 3.520 V 0.
代码是:
my $directory = 'C:\Users\Try';
my $motif = '(F)';
parse($motif);
sub parse{
my ($x) = (@_); #$x=(F)
print "$x\n";
while(<INPUT>)
{
if($_ =~ />*($x)/)
{
print $_."\n";
$printable = 1;
}
else
{
# print "ELSE\n";
}
# print "FINISH 1 loop\n";
}
}
结果,我希望得到:
00 000 000 000 1 > beta (F)
00 000 000 1 000 > beta (F)
00 000 1 000 000 > beta (F)
57020 0 Main LDO VOUT, IN = 3.5V, OUT = 200u out 3.480 V 3.480 V (F) 3.520 V 0.
目前我得到的输出如下:
00 000 000 000 1 > beta (F)
00 000 000 1 000 > beta (F)
00 000 1 000 000 > beta (F)
Fail
57020 0 Main LDO VOUT, IN = 3.5V, OUT = 200u out 3.480 V 3.480 V (F) 3.520 V 0.
答
变化:
if($_ =~ />*($x)/)
到
if($_ =~ />+.*($x)/)
所以你会得到只有>
和(F)
线一条线
说明:
>* mean zero or more `>` so also lines with only a F will be matched (parentheses are Special character in regex)
>+.* means one or more `>` and after that can be Zero or more character.
答
的就是你得到的结果呢? – Jens
您好延,我得到的结果 00 000 000 000 1>β(F) 00 000 000 1 000>β(F) 00 000 1 000 000>β(F) 故障 57020 0主LDO VOUT ,IN = 3.5V,OUT = 200u输出3.480 V 3.480 V(F)3.520 V 0. –
结果中有一个额外的失败行。这不是我需要的。 –