首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Perl中,如何输出(打印)字符串后面的所有行?

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

Stack Overflow用户
提问于 2017-08-17 18:04:12
回答 1查看 114关注 0票数 0

我需要处理一个日志文件。我通过<STDIN>将其发送给Perl。我只需要输出一个摘要,它在包含几个等号的一行后面。

摘要是每日日志中的最后一部分。所以,我需要一切从行后的=s通过EOF开始。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-17 18:10:40

你需要一个或两个循环。

在输出中包括触发器行:

代码语言:javascript
复制
perl -e'
   while (<>) {
      last if /===/;
   }

   if (defined($_)) {
      print;
      while (<>) {
         print;
      }
   }
' log
代码语言:javascript
复制
perl -ne'print if $print ||= /===/' log

在输出中不包括触发器行:

代码语言:javascript
复制
perl -e'
   while (<>) {
      last if /===/;
   }

   if (defined($_)) {
      while (<>) {
         print;
      }
   }
' log
代码语言:javascript
复制
perl -ne'last if /===/; END { print while <> }' log
代码语言:javascript
复制
perl -ne'print if $print; $print ||= /===/' log
代码语言:javascript
复制
perl -ne'print unless 1 .. /===/' log
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45742178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档