【问题标题】:Get lines from stdout after timestamp时间戳后从标准输出获取行
【发布时间】:2013-02-23 07:23:29
【问题描述】:

在标准输出上打印出大量错误/警告/信息日志。我只对开始特定操作后记录的行感兴趣。

其他信息:我正在使用 Python 远程登录到 shell 环境。我在 shell 上执行命令并存储动作开始的时间。然后我调用一个命令来查看在标准输出上吐出的日志。我希望在该时间戳返回 Python 之后读取 greped 行。我还存储了当前时间,但不确定如何使用它(可能是日期范围上的 grep?)

我可以重定向到一个文件并使用 find,但日志很大,我宁愿不阅读所有内容。 我可以 grep -n 获取行号,然后阅读所有内容,但我不知道该怎么做。

egrep 的概念正则表达式类似于:{a-timestamp}*

任何建议将不胜感激!

【问题讨论】:

  • 可以记录动作时日志文件的大小。然后在 Python 中使用file.seek() 开始读取与该大小对应的偏移量的日志文件。
  • 有没有办法对标准输出做同样的事情? (这就是转储日志的地方)
  • 您的问题中的“打开日志”是什么意思?那不是日志文件吗?那是管道吗?
  • 刚刚找到一个解决方案:1) "wc -l" 获取行数 2) "grep -n {the-timestamp-i-have}" 获取我想开始的行号在 3) 减去这些和 "tail --{difference} 有什么更好的吗?
  • 这对我来说看起来不错。

标签: python regex shell logging stdout


【解决方案1】:
awk '/the-timestamp-I-have/,0' the-log-file

这将打印来自the-log-file 的行,从与the-timestamp-I-have 匹配的第一行开始,一直到最后一行。

参考:

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    相关资源
    最近更新 更多