我有一个巨大的日志文件被分成大约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
====
答案 0 :(得分:3)
csplit命令可用于根据模式进行拆分。
例如,
csplit -f PREFIX -n 2 large_file '/====/' '{*}'
这会将文件拆分为'===='
将生成的文件命名为PREFIX01,PREFIX02
{*}指定拆分为输入文件中显示的模式的次数。
还有其他选项可以微调输出文件的生成方式。 您可以在/ ==== /之后放置一个整数来控制是否在令牌之前或之后精确地拆分。