Tenho um arquivo com muitas linhas, e em cada linha tenho os argumentos que quero passar para paralelo com uma tabulação.
Eu executo este script
cat $hdd_file | grep $ssd | parallel -C '\t' clean_and_destroy
E funciona, $ hdd_file é o nome do arquivo, o grep coleta as linhas que os hdds possuem um certo $ ssd como cache e, em seguida, o paralelo chama uma função que destrói a conexão deles.
Agora que fiz novas partições para os ssds limpos, tento chamar o paralelo assim:
cat $hdd_file | grep $ssd | parallel -C '\t' create_new_cache :::+ `seq $partitions_per_ssd`
Que deveria obter os argumentos do pipe e combiná-los com os números fornecidos, mas não o faz.
cat $hdd_file | grep $ssd | parallel -C '\t' create_new_cache ::: {} :::+ `seq $partitions_per_ssd`
Eu também tentei isso e ainda não funciona. O {} :::+ são passados como argumentos por algum motivo
Solução GNU
parallel
:Exemplo
input.txt
(para demonstração):grep '^[ac]' input.txt
será usado para emular o comando (ou pipeline) agindo como arquivo de origem de entradaA saída:
:::: argfiles
- tratarargfiles
como fonte de entrada.:::
e::::
pode ser misturado.Para agregar elementos de cada fonte de entrada - adicione a
--xapply
opção:A saída: