Sto usando xargs
con l'opzione --max-args=0
(in alternativa -P 0
).
Tuttavia, l'output dei processi viene unito al stdout
flusso 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 egrep
con ^
nel mio modello sull'intero xargs
output, questo sta rovinando il mio risultato.
Esiste un modo per forzare la xargs
scrittura 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.
xargs
non sembra fornire tale funzionalità.
make
la funzione dei lavori, penso che make
unisca correttamente le linee di output.
--line-buffered
bandiera per egrep
aiutare
xargs
.