我有一个很大的 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