linux - 合并、排序、维护行序

标签 linux file sorting merge

这听起来很矛盾。所以让我解释一下。我有许多使用 log4j 写入不同文件并轮换的日志文件。我想做的是将它们合并成更少的文件。

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

但我看到排序是将具有相同秒/毫秒的条目按与它们在原始输出文件中出现的顺序不同的顺序排列。这可能不是什么大不了的事。但是,我不喜欢它。关于我如何去做我想做的事(在排序时保持原来的行顺序)有什么想法吗?我宁愿不编写自己的程序,并希望尽可能使用 native linux utils。但是,我对执行此操作的“最佳”方式持开放态度(Perl、Python 等)。

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

谢谢, 格雷格

最佳答案

你说的是“稳定”排序。 sort 上有一个 -s 选项,它应该可以满足您的需求。

Stability in sorting algorithms

关于linux - 合并、排序、维护行序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35726842/

相关文章:

linux - 为什么在 linux ssh 中鼠标选择会自动触发 ctrl+C?

javascript - 在简单网站上显示生成的 JSON 文件

java - 使用java中的冒泡排序查找数组中第一个第二大的数字及其位置

通过 SSH 隧道连接到 Namecheap 的 MySQL 数据库的 Python 脚本

linux - 我想在 Bash 脚本中使用 sed 删除日志文件中 'var' 变量中包含的字符串模式

linux - Linux 定制版本中的 hp-health-10.50-1826.38.rhel6.x86_64 rpm 软件包出现问题

c# - 在 c# 中从 MultipartFileData 获取原始文件名

Python 读取极长行文件的性能

javascript - jquery中使用列设置表的顺序

Python:根据元素在列表末尾移动特定列表