在Perl中,如何输出(打印)字符串后面的所有行?

时间:2017-08-17 18:04:13

标签: regex perl

我需要处理一个日志文件。我通过<STDIN>将其发送给Perl。我只需要输出摘要,该摘要跟随包含多个等号的行。

摘要是每日日志中的最后一位。所以,我需要从=到EOF之后的所有行开始。

我尝试使用带有“while”的next unless循环,但我无法让它工作。

1 个答案:

答案 0 :(得分:3)

你需要一个或两个循环。

在输出中包含触发线:

perl -e'
   while (<>) {
      last if /===/;
   }

   if (defined($_)) {
      print;
      while (<>) {
         print;
      }
   }
' log

perl -ne'print if $print ||= /===/' log

不在输出中包含触发线:

perl -e'
   while (<>) {
      last if /===/;
   }

   if (defined($_)) {
      while (<>) {
         print;
      }
   }
' log

perl -ne'last if /===/; END { print while <> }' log

perl -ne'print if $print; $print ||= /===/' log

perl -ne'print unless 1 .. /===/' log