在perl中搜索特定行之后的行
我有一个日志文件,在那里我试图存储所有的行,一旦我发现这已经发生了由于。然后新的生产线开始了 所以基本上日志是这样的在perl中搜索特定行之后的行,perl,Perl,我有一个日志文件,在那里我试图存储所有的行,一旦我发现这已经发生了由于。然后新的生产线开始了 所以基本上日志是这样的 Bla bla bla bla....This has happened due to. ABC DEF GHI JKL 你能帮我匹配一下paatern吗?一旦我找到了这条线,就会发生这种情况 while (<>) { next unless /This has happened due to/; while (<>) { # P
Bla bla bla bla....This has happened due to.
ABC
DEF
GHI
JKL
你能帮我匹配一下paatern吗?一旦我找到了这条线,就会发生这种情况
while (<>) {
next unless /This has happened due to/;
while (<>) {
# Process lines
}
last;
}
将脚本保存到文件并使其可执行。然后像./script.pl日志文件一样运行
将脚本保存到文件并使其可执行。然后像./script.pl logfile一样运行请将答案更改为fileinput@loldop我更喜欢编写处理stdin的脚本,除非有理由不这样做。他总是可以根据自己的具体需要来调整。在我的测试中,这会导致解释器永远挂起。我只是尝试了一下,如果我重定向输入,效果很好。但是如果我从终端读取数据,我必须输入Ctl-D两次,因为两个循环都在检查EOF。所以我添加了最后一个;语句以跳出外部循环。请将您的答案更改为文件input@loldop我更喜欢编写处理stdin的脚本,除非有理由不这样做。他总是可以根据自己的具体需要来调整。在我的测试中,这会导致解释器永远挂起。我只是尝试了一下,如果我重定向输入,效果很好。但是如果我从终端读取数据,我必须输入Ctl-D两次,因为两个循环都在检查EOF。所以我添加了最后一个;语句以中断外部循环。
#!/usr/bin/env perl
while (<>) {
last if /This has happened due to/;
}
while (<>) {
print; # do smth with the line
}