Как объединить два файла GZIP, удаляя первую строку из второго файла? - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть два gzip CSV-файла, каждый из которых имеет следующее распакованное содержимое:

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"; 
}

1 Ответ

4 голосов
/ 28 февраля 2020

С минимальным изменением вашего кода:

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

или

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