如何拆分、为每个拆分和 gzip 文件添加文本

如何拆分、为每个拆分和 gzip 文件添加文本

我想要一个巨大的文件data.txt并且:

  1. 分割256m
  2. 将前 3 行添加data.txt到每个拆分文件
  3. 压缩它

data.txt好像:

aaa
bbb
ccc
<data>
<data>
<data>
...
<few million rows>
<data>

最终结果是每个分割文件将具有相同的前 3 行

aaa
bbb
ccc

我知道最有效的方法就是在内存中。如果我离开第 2 步,它将看起来像:

split --bytes=256M -d -a 3 --filter='gzip > $FILE.gz' data.txt split/data_

但在步骤 2 中,我不确定如何在不将 gzip 拆分为单独的命令的情况下执行此操作,从而将文件写入磁盘。

答案1

您可以使过滤器更复杂:

split -C 256M -d -a 3 --filter '(head -n 3 data.txt; cat) | gzip > $FILE.gz' <(tail -n +4 data.txt) data_

这会跳过 的前三行data.txt,然后将它们重新引入到每个分割部分中。

我使用-C而不是--bytes确保拆分文件包含完整记录。

相关内容