Shell expansion of variables is converting $FILE
to an empty string. You need to put a backslash in front of $FILE
to prevent the shell from doing the expansion.
Как использовать опцию «фильтр» для GNU split с параллельной GNU?
2155
saffsd
Я пытаюсь разбить несколько огромных файлов 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?
2 ответа на вопрос
3
Kyle Jones
0
Ole Tange
Сегодня вы бы использовали --pipe
опцию GNU Parallel :
parallel --seqreplace // "zcat {} | parallel --pipe -N 10 gzip '>{.}.{#}.gz'" ::: big_file0.gz big_file1.gz
Если вы согласны с добавлением, big_file0.gz big_file1.gz
это еще проще:
zcat big_file0.gz big_file1.gz | parallel --pipe -N 10 gzip '>{#}.gz'
Похожие вопросы
-
6
Какие функции Zsh вы используете?
-
8
Убийство Windows Shell
-
3
Mac OS X: обычные места, где должны жить бинарные файлы
-
-
2
Mac OS X: нужен простой скрипт
-
2
Как найти, а затем сравнить похожие файлы в папке Dropbox?
-
1
ksh эквивалент perl $! причина ошибки
-
3
Выясните, какой будет путь без символической ссылки?
-
4
Как запустить диалог свойств файла из командной строки?
-
2
Можно ли настроить несколько вкладок при запуске терминала?
-
2
разница между лам и пастой