首页 > 解决方案 > 如何合并两个 GZIP 文件,同时从第二个文件中删除第一行?

问题描述

我有两个gzipCSV 文件,每个文件都有这些解压缩的内容:

a,1
b,2
c,3

如何使用 bash 函数以从第二个文件中删除第一行的方式合并它们,以便获得此输出?最好我可以在不解压缩任何一个输入文件的情况下做到这一点。

a,1
b,2
c,3
b,2
c,3

我已经知道如何处理非 gzip 文件:

function merge_files { 
   cat "$1" <(tail +2 "$2") > "$3"; 
}

标签: bashcsvmergegzipcat

解决方案


对您的代码进行最小的更改:

function merge_files { 
   cat <(gzcat "$1") <(gzcat "$2" | tail +2) | gzip > "$3"; 
}

或者

function merge_files { 
   (
      gzcat "$1";
      gzcat "$2" | tail +2
   ) | gzip > "$3"; 
}

推荐阅读