shell 如何合并日志文件并按时间排序

s4chpxco  于 2022-11-16  发布在  Shell
关注(0)|答案(3)|浏览(256)

我有很多日志文件,比如

日志文件1

2016-09-11_19:40:15.537#15437 [INFO] A1
2016-09-11_19:40:15.537#15437 [WARN] A2
2016-09-11_19:40:15.542#15437 [INFO] A3

日志文件2

2016-09-11_19:40:15.537#437 [INFO] B1
2016-09-11_19:40:15.540#437 [INFO] B2

我希望可以通过脚本或其他方法(如按时间排序)合并它们

2016-09-11_19:40:15.537#15437 [INFO] A1
2016-09-11_19:40:15.537#15437 [WARN] A2
2016-09-11_19:40:15.537#437 [INFO] B1
2016-09-11_19:40:15.540#437 [INFO] B2
2016-09-11_19:40:15.542#15437 [INFO] A3

我如何以有效的方式合并文件?谢谢!

zengzsys

zengzsys1#

参考:Merging multiple log files by date including multilines
如上面的问题所述,如果您确定所有日志行都以时间戳开头,则可以执行以下操作:

cat logA.log logB.log | sort -n

如果有其他行(如堆栈跟踪)不是以时间戳开头,则此操作将不起作用。
我想你可以看看上面的问题和答案,如果你考虑类似的情况。

jtw3ybtb

jtw3ybtb2#

尝试基于rust-based的工具Super Speedy Syslog Searcher
(假设您有rust installed

cargo install super_speedy_syslog_searcher

然后

s4 --color=never /var/log > logs-merged.log
  • Super Speedy Syslog Searcher* 将按日期时间对不同的日志消息进行排序。
yv5phkfx

yv5phkfx3#

将所有文件插入空的**记事本++**文档。
编辑→行操作→按字典升序对行排序。

相关问题