zgrep 文件升序排列
zgrep files in ascending order
我想从 linux 日志中提取信息,这些日志压缩在编号从 file.gz 到文件 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) 中处理,因此这些文件的最后修改 date/time 对所有文件都是相同的
我正在尝试这样的事情,但没有成功(无论如何我相信它只会考虑 10 位数字的日期,将时间戳放在一边):
zgrep -ih error log.* | sort -n -t"-" -k1.7,1.10 -k1.1,1.2 -k1.4,1.5
这将是命令 zgrep -ih error log.{50..1}.gz log.gz
,它 zgreps 日志。50.gz,然后 .49.gz 直到 log.gz。通过这种方式,我首先看到具有较旧时间戳的匹配项,直到最后出现最新的
我想从 linux 日志中提取信息,这些日志压缩在编号从 file.gz 到文件 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) 中处理,因此这些文件的最后修改 date/time 对所有文件都是相同的
我正在尝试这样的事情,但没有成功(无论如何我相信它只会考虑 10 位数字的日期,将时间戳放在一边):
zgrep -ih error log.* | sort -n -t"-" -k1.7,1.10 -k1.1,1.2 -k1.4,1.5
这将是命令 zgrep -ih error log.{50..1}.gz log.gz
,它 zgreps 日志。50.gz,然后 .49.gz 直到 log.gz。通过这种方式,我首先看到具有较旧时间戳的匹配项,直到最后出现最新的