首页 > 解决方案 > 合并和排序日志文件 - 多行

问题描述

我在一个目录中有多个日志文件,我需要根据日期对它们进行合并和排序。
我想在 bash/shell 中执行此操作,因为我需要在现有脚本中执行此操作。
有些消息打印在多行上
每条消息都以日期开头(2021-06-29 10:31:26)

2021-06-29 10:31:26 message Log1  example -line 1^M
Second line of message

2021-06-29 10:31:25.437839 PID29559 message Log2 example

标签: linuxbash

解决方案


试试这个

cat 1 2 3 >merge;grep -E -i -w "[0-9]{4}-[0-9]{2}-[0-9]{2}" merge|sort

解释

这是具有多行的文件 3 的内容

2022-02-10
2022-02-11 dhqwiodhiqowdhqwdh

这是 1 2 3 文件的内容(通过 cat)

cat 1 2 3 

2020-12-24
2021-02-23    djiowdhiwod
2022-02-10
2022-02-11 dhqwiodhiqowdhqwdh

运行整个命令后的输出 ( cat 1 2 3 >merge|grep -E -i -w "[0-9]{4}-[0-9]{2}-[0-9]{2}" merge|sort)

2020-12-24
2021-02-23    djiowdhiwod
2022-02-10
2022-02-11 dhqwiodhiqowdhqwdh

cat:将显示所有内容然后合并。

grep:将挑选出所有带有日期的行

sort:将相应地对消息进行排序


推荐阅读