linux - 使用分隔符拆分日志文件以保持数据完整性

标签 linux bash shell

我有一个巨大的日志文件,要分成每个大约 1MB 的文件。 我可以使用 split 命令,但我会将日志条目分成两半,甚至可以在一行中间拆分。

如何使用简单而优雅的命令拆分这样的文件? (复杂的脚本不是解决方案)。

对于以下情况,拆分将在标记“====”之后完成

====
Log entry 1 line 1
Log entry 1 line 2 
Log entry 1 line 3
====
Log entry 2 line 1 
Log entry 2 line n
====

最佳答案

csplit 命令可用于根据模式进行拆分。

例如,

csplit -f PREFIX -n 2 large_file '/====/' '{*}'

这将在“====”处拆分文件

将生成的文件命名为 PREFIX01、PREFIX02

{*} 指定拆分次数与模式在输入文件中出现的次数相同。

还有其他选项可以微调输出文件的生成方式。 你可以在/====/后面放一个整数来控制是否在 token 处拆分,之前还是之后。

关于linux - 使用分隔符拆分日志文件以保持数据完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33060537/

相关文章:

linux - 如何在 shell 脚本中获取管道 '|' 的第 n 次和第 n+1 次出现之间的子字符串

linux - 脚本有什么问题

regex - bash 正则表达式中的匹配组

linux - 使用 shell 脚本从 userB 以 userA 身份启动服务

bash - 如何在 ssh 命令行中使用环境模块?

linux - unix - 文件中有多少条记录以及字符出现次数的分割

linux - 获取最新的日志文件并存储在变量中

android - mipsel-linux-gcc : Command not found

linux - 为什么我的 gdb 提示在我更改颜色后显示错误

c - 使用 list_for_each 为 Linux 内核进程实现 DFS