这听起来很矛盾。所以让我解释一下。我有许多使用 log4j 写入不同文件并轮换的日志文件。我想做的是将它们合并成更少的文件。
我是如何开始这样做的:
- 使用 awk 将多行条目合并到一个单独的文件中。
- cat awk 输出文件到 1 个文件。
- 排序 cat 文件
- awk 分隔连接的行。
但我看到排序是将具有相同秒/毫秒的条目按与它们在原始输出文件中出现的顺序不同的顺序排列。这可能不是什么大不了的事。但是,我不喜欢它。关于我如何去做我想做的事(在排序时保持原来的行顺序)有什么想法吗?我宁愿不编写自己的程序,并希望尽可能使用 native linux utils。但是,我对执行此操作的“最佳”方式持开放态度(Perl、Python 等)。
我考虑过将输出文件从最高到最低排序(log4j 轮换文件),这样我就不必排序了。但这只能解决写入同一日志文件(file1.0.log、file1.1.log 等)的文件的问题。但这在需要将 file2 与 file1 合并时无济于事。
谢谢, 格雷格
最佳答案
你说的是“稳定”排序。 sort
上有一个 -s
选项,它应该可以满足您的需求。
关于linux - 合并、排序、维护行序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35726842/