【问题标题】:zgrep files in ascending orderzgrep 文件按升序排列
【发布时间】:2021-11-22 13:09:09
【问题描述】:

我想从 linux 日志中提取信息,这些信息压缩在编号从 file.gz 到 file.50.gz 的文件中。然后 zgrep 检查的第一个日志文件是 log.1.gz,然后是 log.10.gz,然后是 log.11.gz,等等。但这与事件的时间顺序混淆了。有没有办法: a) 按自然升序进行 zgrep 检查?或者 b) 根据日期对匹配进行排序(日志中的每一行都遵循此日期模式 yyyy/mm/dd-hh:mm:ss.mss f.i: 2021/10/12-08:27:33.166324)

-> 由于这些日志被提取以离线工作,然后在 Windows 机器 (wsl) 中处理,因此这些文件的最后修改日期/时间对于所有这些文件都是相同的

我正在尝试这样的事情但没有运气(无论如何我相信它只会考虑 10 位数的日期,将时间戳放在一边):

zgrep -ih error log.* | sort -n -t"-" -k1.7,1.10 -k1.1,1.2 -k1.4,1.5

【问题讨论】:

  • zgrep -ih error log.{1..50}.gz 如果使用 bash 或 zsh?
  • 足够接近肖恩,不包括唯一没有编号的文件:log.gz,所以我添加了它zgrep -ih error log.{50..1}.gz log.gz(也将文件的顺序更改为从最旧的时间戳开始到最近的时间戳) .如果您回答问题,我会标记它是正确的,谢谢!

标签: linux sorting windows-subsystem-for-linux zgrep


【解决方案1】:

这将是命令zgrep -ih error log.{50..1}.gz log.gz,它是 zgreps log.50.gz,然后是 .49.gz,直到 log.gz。这样我会先看到带有旧时间戳的匹配,直到最后看到最新的匹配

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    相关资源
    最近更新 更多