Ответ 1
Возможно, вы ищете --colsep
.
generate_file_pairs | parallel --colsep ' ' ./prog {1} {2}
Подробнее читайте man parallel
. И посмотрите видеоролик, если вы еще этого не сделали http://www.youtube.com/watch?v=OpaiGYxkSuQ
Использование GNU parallel
: http://www.gnu.org/software/parallel/
У меня есть программа, которая принимает два аргумента, например
$ ./prog file1 file2
$ ./prog file2 file3
...
$ ./prog file23456 file23457
Я использую script, который генерирует пары имен файлов, однако это создает проблему, потому что результатом script является одна строка, а не пара. как:
$ ./prog "file1 file2"
GNU parallel
Кажется, у него появилось множество трюков в рукавах, интересно, есть ли там для разделения текста вокруг разделителей:
$ generate_file_pairs | parallel ./prog ?
# where ? is text under consideration, like "file1 file2"
Легкая работа заключается в том, чтобы разделить args вручную в prog, но я хотел бы знать, возможно ли это в GNU parallel
.
Возможно, вы ищете --colsep
.
generate_file_pairs | parallel --colsep ' ' ./prog {1} {2}
Подробнее читайте man parallel
. И посмотрите видеоролик, если вы еще этого не сделали http://www.youtube.com/watch?v=OpaiGYxkSuQ
Вы ищете параллельную параллельную опцию -n
. Это то, что вы ищете:
./generate_file_pairs | parallel -n 2 ./prog {}
Выдержка из Параллельный документ GNU:
-n max-args
Use at most max-args arguments per command line. Fewer than max-args
arguments will be used if the size (see the -s option) is exceeded,
unless the -x option is given, in which case GNU parallel will exit.
В параллельном руководстве говорится:
Если команда не указана, выполняется строка ввода... GNU parallel часто можно использовать в качестве замены xargs или cat | bash.
Итак, попробуйте:
generate command | parallel
Попробуйте понять результат этого:
for i in {1..5};do echo "echo $i";done | parallel