我使用范围运算符来提取日志文件的一部分,例如:
tail -F logfile | perl -ne 'print if /b/ .. /d/;'
现在我尝试在提取的部分匹配后退出流程。我尝试过:
tail -F logfile | perl -ne 'print if /b/ .. (/d/ and exit);'
但这并没有打印出最后一行。如何在不丢失最后一行的情况下退出?
答案 0 :(得分:4)
有重复绑定检查的明显解决方案。
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
结尾的字符串(科学记数法意为×10 0 )来提醒来电者它已经失败。
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/;
'