Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl中搜索特定行之后的行_Perl - Fatal编程技术网

在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
}