Perl 从日志尾提取匹配行后退出
我正在使用范围运算符提取日志文件的一部分,例如:Perl 从日志尾提取匹配行后退出,perl,Perl,我正在使用范围运算符提取日志文件的一部分,例如: tail -F logfile | perl -ne 'print if /b/ .. /d/;' 现在,我试图在匹配提取的部分后退出该过程。我试过: tail -F logfile | perl -ne 'print if /b/ .. (/d/ and exit);' 但这不会打印最后一行。如何使其退出而不丢失最后一行?有一个明显的解决方案,即重复绑定检查 tail -F logfile | perl -ne' next if !(
tail -F logfile | perl -ne 'print if /b/ .. /d/;'
现在,我试图在匹配提取的部分后退出该过程。我试过:
tail -F logfile | perl -ne 'print if /b/ .. (/d/ and exit);'
但这不会打印最后一行。如何使其退出而不丢失最后一行?有一个明显的解决方案,即重复绑定检查
tail -F logfile | perl -ne'
next if !(/b/ .. /d/);
print;
last if /d/;
'
但让我们看看其他选择。查看。
返回的内容
$ echo -en 'a\nb\nc\nd\ne\n' | perl -nlE'my $ff = /b/ .. /d/; say "$_: $ff"'
a:
b: 1
c: 2
d: 3E0
e:
它使用一个以E0
结尾的字符串(科学符号的意思是×100)来提醒调用者它失败了
tail -F logfile | perl -ne'
my $ff = /b/ .. /d/;
print if $ff;
last if $ff =~ /E0/;
'
使用人字拖并没有多大帮助
tail -F logfile | perl -ne'
next if !($in ||= /b/);
print;
last if /d/;
'
有一个显而易见的解决办法,就是重复边界检查
tail -F logfile | perl -ne'
next if !(/b/ .. /d/);
print;
last if /d/;
'
但让我们看看其他选择。查看。
返回的内容
$ echo -en 'a\nb\nc\nd\ne\n' | perl -nlE'my $ff = /b/ .. /d/; say "$_: $ff"'
a:
b: 1
c: 2
d: 3E0
e:
它使用一个以E0
结尾的字符串(科学符号的意思是×100)来提醒调用者它失败了
tail -F logfile | perl -ne'
my $ff = /b/ .. /d/;
print if $ff;
last if $ff =~ /E0/;
'
使用人字拖并没有多大帮助
tail -F logfile | perl -ne'
next if !($in ||= /b/);
print;
last if /d/;
'