【问题标题】:tail using Grep: Filter certain no. of lines from the log file when ever there is a match on the grep使用 Grep 的尾部:过滤某些编号。当 grep 上有匹配项时,日志文件中的行数
【发布时间】:2015-12-15 17:29:49
【问题描述】:

可以说,我想使用字符串“xyz”来 grep 一个日志文件,如下所示。

tail -f 文件名 | grep -vw "xyz"

在这种情况下,“xyz”是我要搜​​索的关键字。这将过滤日志文件中匹配“xyz”的行。

如果日志文件中有一行与关键字“xyz”匹配,我还想从日志文件中过滤掉接下来的 10 行。我怎样才能做到这一点?

请帮忙!

【问题讨论】:

  • 我不认为 grep 可以自己做到这一点。当您说“过滤掉接下来的 10 行”时,您的意思是“忽略接下来的 10 行,即使它们匹配 'xyz'”?
  • 是的,忽略接下来的 10 行。
  • 我认为你需要使用类似sed

标签: grep tail


【解决方案1】:

您可以使用 sed 来实现这一点。

sed -e '/xyz/,+10d' filename

【讨论】:

  • 看起来这个命令正在解析整个日志文件。我不想解析整个日志。我只想看看现在正在记录的新消息。我该怎么做?
  • 用尾巴管它。尾-f | sed -e '/xyz/,+10d'
【解决方案2】:

使用awk 的另一种方式:

tail -f filename | awk 'BEGIN{skip=-1}/xyz/{skip=NR+10}NR>skip{print}'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 2013-12-16
    • 2010-09-18
    • 2021-06-20
    • 1970-01-01
    • 2019-11-02
    相关资源
    最近更新 更多