Я пытаюсь разбить несколько огромных файлов gz на сжатые по N-строке фрагменты.
Чтобы продемонстрировать, давайте рассмотрим следующее:
seq 100 | gzip > big_file0.gz
Я могу разделить это на несколько сжатых файлов по 10 строк следующим образом:
zcat big_file0.gz | split -l 10 --filter='gzip > $FILE.gz' - big_file0.
Предположим, у нас есть несколько больших файлов big_file0.gz , big_file1.gz ...
Теперь я хотел бы разделить каждый из этих файлов, используя GNU параллельно. Вот команда, которую я придумаю:
parallel "zcat {} | split -l 10 --filter='gzip > $FILE.gz' - {.}." ::: big_file0.gz big_file1.gz
Однако замена оболочки для $FILE не работает должным образом. $FILE заменяется пустой строкой, поэтому весь вывод записывается в файл с именем .gz .
Как я могу заставить подстановку $FILE работать как положено в параллельной GNU?
