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

时间:2015-10-11 00:57:55

标签: 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
====

1 个答案:

答案 0 :(得分:3)

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

例如,

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

这会将文件拆分为'===='

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

{*}指定拆分为输入文件中显示的模式的次数。

还有其他选项可以微调输出文件的生成方式。 您可以在/ ==== /之后放置一个整数来控制是否在令牌之前或之后精确地拆分。