Я пытаюсь разбить несколько огромных файлов 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?