【发布时间】: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