将一个文件的头与另一个文件的尾连接起来

将一个文件的头与另一个文件的尾连接起来

我有一个很大的 gzip 压缩的 mysqldump 文件,其中包含一些表定义和许多插入语句。我想编辑表定义,但保留插入语句。压缩后的文件大约有 500gb,因此我不想为了编辑而解压它。要跳过标题,我可以这样做

zcat bigfile.gz | tail -n+50

只需将标头添加到另一个 gzip 压缩文件中即可

zcat header.gz bigfile.gz

但有没有办法将这两个语句结合起来呢?

答案1

你可以使用流程替代,它比命名管道更符合惯用方式并且更简洁。

cat header.sql <(zcat bigfile.gz | tail -n+50)

答案2

我最终使用命名管道和三个 shell(通过 tmux)来解决这个问题:

第一的,

mkfifo pipe

启动shell1:

cat header.sql > pipe

然后启动shell2:

zcat bigfile.gz | tail -n+50 > pipe

然后启动shell3

cat pipe | mysql -uroot -pxyz database_name

相关内容