合并,排序,维护行顺序

时间:2016-03-01 15:27:43

标签: linux file sorting merge

这可能听起来很矛盾。所以让我解释一下。我有许多日志文件,使用log4j写入不同的文件并旋转。我想要做的是将它们合并到更少的文件中。

我是如何开始这样做的:
- 使用awk将多行条目连接成一行到一个单独的文件中 - cat awk输出文件到1个文件 - 对猫文件进行排序
- awk分隔连接的行。

但是我看到排序是以与原始输出文件中出现的顺序不同的顺序放置具有相同秒/ ms的条目。这可能不是一个巨大的交易。但是,我不喜欢它。关于我如何做我想做的任何想法(在排序时保持原始的行顺序)?我宁愿不编写我自己的程序,并希望尽可能使用原生linux工具。但是,我对这种“最佳”方式(Perl,Python等)持开放态度。

我考虑过将输出文件从最高到最低(log4j旋转文件),以便我不必排序。但这只解决了写入同一日志文件(file1.0.log,file1.1.log等等)的文件的问题。但是当需要将file2与file1合并时,这无济于事。

谢谢你, 格雷格

1 个答案:

答案 0 :(得分:1)

你所说的是"稳定"排序。 -s上有一个sort选项可以为您提供所需内容。

Stability in sorting algorithms