Estou usando xargscom a opção --max-args=0(como alternativa -P 0).
No entanto, a saída dos processos é mesclada no stdoutfluxo sem levar em consideração a separação de linha adequada. Então, muitas vezes acabo com linhas como:
<start-of-line-1><line-2><end-of-line-1>
Como eu estou usando egrepcom ^no meu padrão em toda a xargssaída isto é estragar o meu resultado.
Existe alguma maneira de forçar xargsa gravação das saídas do processo em ordem (qualquer ordem, desde que a saída de um processo seja contígua)?
Ou alguma outra solução?
Edit: mais detalhes sobre o caso de uso:
Quero baixar e analisar páginas da web de diferentes hosts. Como cada página leva cerca de um segundo para carregar e há algumas dúzias de páginas, eu quero paralelizar as solicitações.
Meu comando tem o seguinte formato:
echo -n $IPs | xargs --max-args=1 -I {} --delimiter ' ' --max-procs=0 \
wget -q -O- http://{}/somepage.html | egrep --count '^string'
Eu uso o bash e não algo como Perl porque os IPs do host (a variável $ IPs) e alguns outros dados vêm de um arquivo bash incluído.
xargsparece não fornecer esse recurso.
makeo recurso de trabalhos, acho que makemescla as linhas de saída corretamente.
--line-bufferedbandeira para egrepajuda
xargs.