首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最后一场比赛直到比赛结束

最后一场比赛直到比赛结束
EN

Stack Overflow用户
提问于 2021-06-07 21:37:58
回答 2查看 359关注 0票数 1

我已经在StackExchange网站上搜索过了,但是我还没有找到我想要的任何东西。以下是grep的两个用例:

  • 打印项目之前/之后的匹配
  • 打印特定的匹配

我正在尝试解析一个日志文件,我想返回日志中的最后一个错误,这是可以预见的,在文件的末尾。但是,有时错误是多行的。“如何实现最后一次匹配”的答案都涉及到尾部或头部,并且只使用一行。

在我的例子中,我只想返回文件中的所有内容,从最后一次匹配开始。通常情况下,这将不会超过10-15行,所以grep -A 15可以在那里完成任务。但是,我仍然只需要得到其中的最后一个,这样就不能单独产生正确的输出。

天真的方法是使用两部分匹配,首先得到最后一次匹配,然后再进行所有操作。这对我来说行不通,因为我不能保证最后一场比赛是独一无二的。

是否有可能以某种方式使用grep来做到这一点,或者是否有更好的工具?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-07 21:54:40

有一种方法可以让sed这样做,但我不记得了。

如果您愿意使用这些命令的组合,那么这里可能会有一些有用的东西:

代码语言:javascript
复制
# Get the line number of teh last match

LNO=$( grep -n 'the error' the_file | tail -1 | cut -d":" -f1 )

# Now use sed to print all lines from that point:

sed -n "$LNO,\$p" the_file
票数 1
EN

Stack Overflow用户

发布于 2021-06-08 05:51:36

我想在某个地方有一个精确的复制品,但我只找到了这些相近的:

有一种方法可以做到:

代码语言:javascript
复制
$ cat ip.txt
foo123
error 1
xyz
error 2
99999
88888

$ tac ip.txt | sed '/error/q' | tac
error 2
99999
88888
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67878994

复制
相关文章

相似问题

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