Saya menggunakan xargsdengan opsi --max-args=0(alternatif -P 0).
Namun, output dari proses digabung ke dalam stdoutaliran tanpa memperhatikan pemisahan garis yang tepat. Jadi saya akan sering berakhir dengan garis-garis seperti:
<start-of-line-1><line-2><end-of-line-1>
Seperti yang saya gunakan egrepdengan ^dalam pola saya pada seluruh xargsoutput ini mengacaukan hasil saya.
Apakah ada cara untuk memaksa xargsuntuk menulis output proses dalam urutan (urutan apa pun, selama output dari satu proses bersebelahan)?
Atau solusi lain?
Edit: detail lebih lanjut tentang use case:
Saya ingin mengunduh dan mem-parsing halaman web dari host yang berbeda. Karena setiap halaman membutuhkan waktu sekitar satu detik untuk memuat dan ada beberapa lusin halaman saya ingin memparalelkan permintaan.
Perintah saya memiliki bentuk berikut:
echo -n $IPs | xargs --max-args=1 -I {} --delimiter ' ' --max-procs=0 \
wget -q -O- http://{}/somepage.html | egrep --count '^string'
Saya menggunakan bash dan bukan sesuatu seperti Perl karena IP host (variabel $ IP) dan beberapa data lainnya berasal dari file bash yang disertakan.
xargssepertinya tidak menyediakan fitur seperti itu.
makefitur pekerjaan, saya pikir makemenggabungkan jalur output dengan benar.
--line-bufferedbendera untuk egrepmembantu
xargs.