Sto usando xargscon l'opzione --max-args=0(in alternativa -P 0).
Tuttavia, l'output dei processi viene unito al stdoutflusso senza tener conto della corretta separazione delle linee. Quindi finirò spesso con linee come:
<start-of-line-1><line-2><end-of-line-1>
Come sto usando egrepcon ^nel mio modello sull'intero xargsoutput, questo sta rovinando il mio risultato.
Esiste un modo per forzare la xargsscrittura degli output del processo in ordine (qualsiasi ordine, purché l'output di un processo sia contiguo)?
O qualche altra soluzione?
Modifica: maggiori dettagli sul caso d'uso:
Voglio scaricare e analizzare pagine Web da host diversi. Poiché ogni pagina impiega circa un secondo per caricarsi e ci sono alcune decine di pagine che voglio parallelizzare le richieste.
Il mio comando ha la forma seguente:
echo -n $IPs | xargs --max-args=1 -I {} --delimiter ' ' --max-procs=0 \
wget -q -O- http://{}/somepage.html | egrep --count '^string'
Uso bash e non qualcosa come Perl perché gli IP host (la variabile $ IPs) e alcuni altri dati provengono da un file bash incluso.
xargsnon sembra fornire tale funzionalità.
makela funzione dei lavori, penso che makeunisca correttamente le linee di output.
--line-bufferedbandiera per egrepaiutare
xargs.