我有一个巨大的日志文件,要分成每个大约 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/