(Alternatif olarak ) xargs
seçeneği ile kullanıyorum .--max-args=0
-P 0
Bununla birlikte, işlemlerin çıktısı, stdout
doğru hat ayrımı dikkate alınmaksızın akışa birleştirilir . Bu yüzden sık sık aşağıdaki gibi satırlarla sonuçlanacağım:
<start-of-line-1><line-2><end-of-line-1>
Ben tüm çıkış desen egrep
ile birlikte kullandığım gibi bu benim sonuç berbat.^
xargs
xargs
Süreç çıktılarını sırayla yazmaya zorlamanın bir yolu var mı (bir sürecin çıktısı bitişik olduğu sürece herhangi bir düzen)?
Yoksa başka bir çözüm mü?
Düzenleme: kullanım durumu hakkında daha fazla bilgi:
Farklı ana bilgisayarlardan web sayfaları indirmek ve ayrıştırmak istiyorum. Her sayfanın yüklenmesi yaklaşık bir saniye sürdüğü ve birkaç düzine sayfa olduğu için istekleri paralelleştirmek istiyorum.
Komutum aşağıdaki forma sahip:
echo -n $IPs | xargs --max-args=1 -I {} --delimiter ' ' --max-procs=0 \
wget -q -O- http://{}/somepage.html | egrep --count '^string'
Ana bilgisayar IP'leri ($ IPs değişkeni) ve diğer bazı veriler dahil edilen bir bash dosyasından geldiğinden bash ve Perl gibi bir şey kullanmıyorum.
xargs
böyle bir özellik sağlamıyor gibi görünüyor.
make
işlerin özelliğini kullanabilirsiniz , bence make
çıktı hatlarını düzgün bir şekilde birleştiriyor.
--line-buffered
bayrak ekliyoregrep
xargs
.